2015-02-10 168 views
0

我面臨着貓鼬更新一個奇怪的問題,我不知道去哪裏了搜索...貓鼬更新不會保存在DB

我想更新的文件(我想更新,因爲我需要排除驗證)從模型方法。這是我的代碼:

module.exports.plugin = function(schema){ 

    schema.add({ deletedAt : { type : Date, default: null } }); 

    schema.methods.softDelete = function(done){ 

     this.update({_id: this._id}, {deletedAt: new Date()}, function(err, num, raw){ 
      logger.info(err, 'Number Updated: ' + num); 
      logger.info(raw); 
      done(err, num); 
     }); 
    }; 
}; 

的功能是否正確觸發,這是記錄器的輸出:

Number Updated: 1 
(ok=true, n=1, updatedExisting=true) 

,讓我假定一切正常,但後來(在蒙戈直接檢查)的字段deletedAt尚未更新。

有什麼建議嗎?

在此先感謝

+0

什麼模式定義是什麼樣子?它有'deletedAt'屬性嗎? – laggingreflex 2015-02-10 14:47:23

+0

是的,這是一個附加到多個模式的插件,但在插件中使用'schema.add({deletedAt:{type:Date,default:null}})定義的deletedAt屬性ID;' – teone 2015-02-10 15:01:11

回答

1

當使用update方法的實例的版本,因爲該方法已經知道更新當前的情況下,你不提供查詢條件參數。

那麼你的方法應該是這樣的,而不是:

schema.methods.softDelete = function(done){ 

    this.update({$set: {deletedAt: new Date()}}, function(err, num, raw){ 
     logger.info(err, 'Number Updated: ' + num); 
     logger.info(raw); 
     done(err, num); 
    }); 
}; 
+0

謝謝。有效的這是有道理的... – teone 2015-02-10 15:43:02