MongooseJS - ????????????

Posted

技术标签:

【中文标题】MongooseJS - 如何保存文档和引用的文档【英文标题】:MongooseJS - How to save document and referenced document 【发布时间】:2013-05-23 09:35:41 【问题描述】:
Request.findOne(_id: id).populate("user").exec(function(err, request) 
    if (!err) 
        request.user.firstname = firstname;
        request.date = date;
        request.save(next);
    

保存后,日期已更改,但用户的名字未更改。 型号:

  var Request = new Schema(
    user: 
        type: ObjectId,
        ref: 'User',
        required: true
    ,
    date: 
        type: Date,
        default: Date.now()
    ,

我还是可以做到的

     request.user.save(function(err)
        if(!err)
            request.save(next)
     );

但为什么第一个不起作用?

【问题讨论】:

【参考方案1】:

requestuser 是不同集合中的文档,因此它们都需要自己的 save 操作。这就是 Mongoose(以及一般的 MongoDB)的工作方式,因为没有更新操作一次影响多个集合。

【讨论】:

【参考方案2】:

检查 Mongoose documentation on populate 的“更新参考”部分。

您将在示例中看到,您仍然必须保存您创建的RequestUser 文档。 (在示例中,他们首先保存用户“guille”,然后在回调中保存“故事”。

在 Mongoose 中,SubDocs 在父文档保存时保存,但 .populate 不这样做。

【讨论】:

以上是关于MongooseJS - ????????????的主要内容,如果未能解决你的问题,请参考以下文章

? MongooseJS ????????????

MongooseJS 无法禁用字段独有

无法使用 mongoosejs 填充

mongoosejs 定义复杂模型

Mongoosejs 更新子文档

MongooseJS 4.6.0 发布,MongoDB 连接包