2015-10-21 130 views
0

我在一個循環中查找文檔通過_id和每個文檔中更新一個布爾值:貓鼬:文檔沒有更新

db.items.findById(key, function(error, item) { 

    item.flags.cake = false; 

    item.update(function(error, zzz) { 
    if(error) return next(error); 
    console.log('output ',zzz); 
    });  
}); 

但文件不會更新。對於item貓鼬模式:

flags: { 
    cake:Boolean 
} 
+0

不應該是'item.save'嗎? –

+1

'next'從哪裏來?另外,'update'是異步操作,使用循環意味着你的'key'被設置爲循環的最後一個元素。所以我想只有最後一個元素會被更新?嘗試創建一個函數,在循環的每個循環中調用:) –

回答

1

使用save()方法來代替它利用回調將接收三個參數,你可以使用: 1)err如果發生錯誤 2)item這是保存的項 3)numAffected將爲1當文檔被成功地保存到MongoDB的,否則爲0。

Items.findById(key, function(error, item) {  
    item.flags.cake = false; 

    item.save(function (err, item, numAffected) { 
     if (err) console.log(err) 
     console.log('output ', item); 
    });  
}); 

作爲一個額外的流量控制措施,保存將返回一個Promise。

item.save().then(function(item) { 
    console.log('output ', item); 
});