我有一个嵌套文档的shema:
var BlogSchema = new mongoose.Schema({
...
comments : [Comments],
...
});
并尝试更新评论
router.post('/comments/:id', function (req, res, next) {
Blog.findOneAndUpdate(
{ 'comments._id': req.params.id },
{ "$set": {"comments.$": req.body}},
function (err, post) {
if (err) {
return next(err);
}
res.json(post);
});
});
请求正文
{"text": "test comment 2"}
在请求启动时,它会返回一条未更改注释的博客文章。启动GET请求我收到更新的博客文章,更新了正确的评论,但:它丢失了所有字段,但 text 除了新内容。即使 _id 也会被移除。
我可以将findAndUpdate函数与这样的“部分”输入对象一起使用,只修改那里提到的字段,但保留其他字段吗?
如何在没有其他类似查询的请求的情况下从函数中返回已经修改过的对象?