Document.save()不适用于ref数组

时间:2016-01-14 01:31:05

标签: node.js mongodb mongoose

我正在尝试更新包含

的文档

events: [{type: Schema.Types.ObjectId, ref: 'Event'}]

字段,但每当我执行

user.save(req.body).then(function (user) {
    res.json(user);
});

user.events未正确保存并且仍为空数组。

我甚至在save()之前尝试过这样做:

if(req.body.events)
    req.body.events = req.body.events.map(function(id){
        return mongoose.Schema.Types.ObjectId(id);
    });

没有任何效果。

1 个答案:

答案 0 :(得分:0)

你遗失了#34; Schema"在你的模型中。 试试这个:

events: [{type: mongoose.Schema.Types.ObjectId, ref: 'Event'}]

编辑: 您可能还需要检查一些其他事项,以便完成这项工作:

(1)确保抓住要更新的用户。

(2)使用本文档的页面仔细检查语法。 http://mongoosejs.com/docs/documents.html

看起来你的req.body在错误的地方。你也不想使用" .then"这里。 在你的例子中,我会这样说:

User.findById(req.params.id, function(err, user) { 
//Grab the user you want to update from the database.
  if (err) return handleError(err);
//This is an extra tip, but use error handlers so you can detect errors.

  user.events = req.body.events;
//Here you are updating the user info that you grabbed from the database.
  user.save(function(err) {
//Saves the updated user info to the database. 
  if(err) return handleError(err);
  res.send(user); 
  });
});

但是,我使用" findByIdAndUpdate"或者"更新" (两者都在我提供的文档链接上)比上面的更简洁。