在JS中,有没有更好的方法来执行以下操作:
我找到一个用户,然后检查密码,然后我希望更新相同用户的文档。
我可以利用已经打开的文档(var doc)进行更新吗?或者按照以下代码执行操作,并在更新时重新搜索name:name。
user_collection.findOne({ name:name }, function(err, doc) {
if(err)
throw err;
if(doc) {
// verify doc.password etc
user_collection.update({ name:name }, {$set: { last_joined:last_joined }}, { upsert:true }, function(err, doc) {
if(err) {
// log error
}
});
}
});
答案 0 :(得分:0)
是 - 使用save
方法。
doc
中的文档是数据库中记录的内存副本。如果要修改它然后将其保存到数据库,则需要使用update
方法,或使用save(modified_doc)
。
注意:正如怪异所说,您可能应该使用user_collection.update({ _id: doc._id }, ...)
而不是再次搜索name
,因为它可能不是唯一的。