2014-01-23 25 views
1

使用Mongoose JS,並嘗試更新我的MongoDB數據存儲中的字段;我掙扎理解爲什麼這個工程:MongooseJS - 更新(不工作),findByIdAndUpdate(工作) - 爲什麼?

MyModel 
    .findByIdAndUpdate(req.params.id, field: someValue) 
    .exec() -> 
     ...callback 

但是下面工作?即使用find/where + update。

MyModel 
    .findOne(_id: req.params.id) 
    .update(field: someValue) 
    .exec() -> 
     ...callback 

OR

MyModel 
    .where(_id: req.params.id) 
    .update(field: someValue) 
    .exec() -> 
     ...callback 

真的讓我抓我的頭!

+1

你是什麼意思時,你說這是行不通的?什麼都沒發生?它設置了錯誤的值?你看到什麼行爲? – juanpaco

+0

您應該檢查回調的第一個參數是否有錯誤幷包含該信息。 –

+0

嘿傢伙[抱歉延遲迴復,沒有電子郵件通知!] --- @ juanpaco:從.exec(錯誤,對象)的兩個參數在console.log上爲空 - 我已經雙重檢查了ID是正確的。它以findByIdAndUpdate格式工作。似乎有關查詢結構有問題,只是不起作用。不能算出它是什麼...... – user2943976

回答

0

這可能是由於貓鼬findOne()返回文檔引起的,但無法對它進行操作,您需要將它轉換爲javascript對象,然後將其傳遞給更新函數。

但是你可以用下面的方法來更新文件

你可以參考貓鼬文檔以及。

http://mongoosejs.com/docs/api.html#model_Model.findByIdAndUpdate

Model.findById(id, function (err, doc) { 
    if (err) { return err;} 
    doc.name = 'jason bourne'; 
    doc.save(callback); 
});