Jon*_*Red 5 mongoose mongodb node.js
我是Mongoose/Mongo和node.js的新手,所以我怀疑这只是我身边的一个误解,但......
下面的代码示例是最小的失败示例,而不是我的用例.
var User = app.db.model('User');
User.find({email: 'm8@test.com'}, function (err, models) {
models[0].update(function(err, mod) {
console.log(err.message)
});
});
Run Code Online (Sandbox Code Playgroud)
这会导致以下错误:将更新应用于文档{_id:ObjectId('54647402cb955748153ea782'),...}后,发现(不可变)字段'_id'已更改为_id:ObjectId('546d9e0e539ed9ec102348f9 ")
为什么会这样?我原本以为从初始查找返回的模型上调用update会没问题.
请注意:在我的用例中,查找和更新之间发生了一些事情.具体来说,我正在做类似的事情:
model.property.push(objectId)
Run Code Online (Sandbox Code Playgroud)
然后我想通过更新提交.
我确信这是一个直截了当的问题,但我无法在文档的任何地方看到我可能会弄错它.
所有帮助赞赏.
我实际需要做的是:
var User = app.db.model('User');
User.find({email: 'm8@test.com'}, function (err, models) {
models[0].save(function(err, mod) {
console.log(err.message)
});
});
Run Code Online (Sandbox Code Playgroud)
使用"保存"而不是"更新"
不知道我是否理解了
查找和更新(例如使用express)
var email = req.params.email;
User.find({email:email}, req.body, function(err,user){
if(err){
throw err;
}
//you do stuff like this
var obj = {
password:'new pass',
username:'username'
}
//use save if you want validate
User.update(user[0],obj,function(err, mod) {
console.log(err)
});
});
Run Code Online (Sandbox Code Playgroud)
仅更新:(例如使用express)
User.update({email:email}, req.body, {}, function(err,user){
if(err){
throw err;
}
res.send(200, {
message : 'User updated ' + user
});
});
Run Code Online (Sandbox Code Playgroud)
请记住:
模型是模式的编译版本。
我希望这可以帮助你
| 归档时间: |
|
| 查看次数: |
6131 次 |
| 最近记录: |