【问题标题】:MongooseJS - How to save document and referenced documentMongooseJS - 如何保存文档和引用的文档
【发布时间】: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)
     });

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

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-12-07
        • 2017-08-12
        • 2020-06-30
        • 2021-03-08
        • 2014-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-20
        相关资源
        最近更新 更多