我正在尝试更新包含
的文档 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);
});
没有任何效果。
答案 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"或者"更新" (两者都在我提供的文档链接上)比上面的更简洁。