我正在努力几个小时来显示更新文档的最终价值(通过猫鼬 updateOne )。我成功修改了它,因为当我在Postman上调用终结点时看到“ nModified:1”,但是我无法输出实际的最终文档-即使使用参数 {new:true} < / em>
这是路线的代码:
// 3. We check if blockid is in this project
Block.findById(req.params.blockid)
.then(block => {
if (!block) {
errors.noblock = "Block not found";
return res.status(404).json(errors);
}
// 4. We found the block, so we modify it
Block.updateOne(
{ _id: req.params.blockid },
{ $set: blockFields }, // data to be updated
{ new: true }, // flag to show the new updated document
(err, block) => {
if (err) {
errors.noblock = "Block not found";
return res.status(404).json(errors);
}
console.log(block);
res.json(block);
}
);
})
.catch(err => console.error(err));
相反,这是我得到的输出(猫鼬处于调试模式)
有什么想法吗?
非常感谢
答案 0 :(得分:2)
{ new : true }
将返回修改后的文档,而不是原始文档。 updateOne
没有此选项。如果您需要回复作为更新的文档,请使用findOneAndUpdate
。
下面是mongoosejs函数,您可以在其中使用{ new : true }
答案 1 :(得分:0)
您应该给第二个参数作为数据的键值巴黎的对象, 不要作为$ Set传递:blockfields,如果它是包含参数的对象,则只需添加如下内容
{$ set:blockFields} 因为代码应该像这样
Block.updateOne(
{ _id: req.params.blockid },
blockFields, // if blockfields is object containing parameters
{ new: true },
(err, block) => {
// lines of code
}
);
有关更多详细信息,请参见updateOne函数详细信息updateOne
答案 2 :(得分:0)