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

5
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个回答

5

requestuser是分别存储在不同集合中的文档,因此它们需要各自进行save操作。这是Mongoose(以及MongoDB)的工作方式,因为没有任何更新操作能够同时影响多个集合。


3

请查看Mongoose populate文档中的“更新Refs”部分。

在那里,你会看到一个例子,你仍然必须保存你创建的RequestUser文档。(在这个例子中,他们首先保存用户'guille',然后在回调函数中保存'story'

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接