2012-05-11 42 views
4

我正在写一个主要依赖mongoDb(通过mongoose)进行存储的Express/NodeJs后端应用程序。如何正确更新记录?

现在已经到了更新数据库记录的时间了,我正在打墙。

我写的代码是:https://gist.github.com/b90130f640cea75b0cbd

据我所知,防止更新错误是由于我传递的所有领域,包括不可修改“_id”一个事实。

我在问:有什么办法可以将所有字段传递给更新方法,或者我是否必须逐个指定它们(或遍历所有字段)?

在此先感谢您的帮助,问候。

回答

2

,你可以将它传递给model.update()

+0

这也是一个很好的建议亚伦。谢谢。 – CarmineM74

2

你可以只UPSERT,而不是更新之前删除_id。

new User(req.body).save(); 

不管怎么说,除此之外,req.body将正确的数据可能会导致取决于您的模型如何安全问题(GitHub上最近有这样的问题)。

我的建议是只从req.body中获取所需内容并进行更新。

var updateData = { 
    name: req.body.name 
}; 
User.update({_id: user._id},updateData, function(err,affected) { 
    console.log('affected rows %d', affected); 
}); 
+0

感谢布鲁诺为upsert指针!完全溜出了我的视线。或许,最后,通过骨干网上的“肮脏的现场跟踪”来尝试走第二条路线会更好。 – CarmineM74