MongooseJS - 如何保存文档和引用文档

时间:2013-05-28 12:04:47

标签: node.js mongodb mongoose

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)
     });

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

在Mongoose中,SubDocs保存父文档保存但.populate不执行此操作。