mongoose子文档不反映Model.findByIdAndUpdate之后的更新

时间:2015-07-02 04:42:20

标签: node.js mongodb mongoose

所以我的模式看起来像是:

var ProjectSchema = new mongoose.Schema({
    scrum_master_id: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
    developers: [{type: mongoose.Schema.Types.ObjectId, ref: 'Developer'}],
    scrums: [{type: mongoose.Schema.Types.ObjectId, ref: 'Scrum'}],
    created_at: {type: Date, default: Date.now},
    meta: {
        trello_board_id: String,
        basecamp_url: String
    },
    description: String,
    title: String
  });

我可以正确地将它发送到我的快递服务器,它可以正确更新。有问题的路线如下:

.put(jwt.protect, function (req, res) {
     Project.findByIdAndUpdate(req.params.id, {$set: req.body}, function (err, project) {
      console.log(project);
      res.json(project);
    });
})

我遇到的问题是我的子文档(如开发人员)未在传递给findByIdAndUpdate回调的project变量中更新。文档在数据库中更新,但不在更新函数的回调中。如何刷新这些子文档以反映数据库现在具有的内容?

1 个答案:

答案 0 :(得分:3)

findByIdAndUpdate带有一个options参数,您可以在其中传递{new:true}并返回修改后的文档:

Project.findByIdAndUpdate(req.params.id, {$set: req.body}, {new: true}, function (err, project) {
  console.log(project);
  res.json(project);
});