Ray*_*jax 5 mongoose mongodb node.js
Request.findOne({_id: id}).populate("user").exec(function(err, request) {
if (!err) {
request.user.firstname = firstname;
request.date = date;
request.save(next);
}
Run Code Online (Sandbox Code Playgroud)
保存后,日期已更改,但用户的名字未更改。
模型 :
var Request = new Schema({
user: {
type: ObjectId,
ref: 'User',
required: true
},
date: {
type: Date,
default: Date.now()
},
Run Code Online (Sandbox Code Playgroud)
我仍然可以这样做
request.user.save(function(err){
if(!err)
request.save(next)
});
Run Code Online (Sandbox Code Playgroud)
但为什么第一个不起作用?
request和user是单独集合中的文档,因此它们各自需要自己的save操作。这就是 Mongoose(以及一般的 MongoDB)的工作方式,因为没有更新操作一次会影响多个集合。
检查 Mongoose文档中关于 populate 的“更新参考”部分。
在示例中,您将看到您仍然必须保存已创建的Request和文档。User(在示例中,他们首先保存用户“guille”,然后在回调中保存“故事”。)
在 Mongoose 中,子文档会在父文档保存时保存,但.populate不会执行此操作。
| 归档时间: |
|
| 查看次数: |
9925 次 |
| 最近记录: |