【发布时间】:2018-03-11 14:28:54
【问题描述】:
我第一次将 findOneAndUpdate 与“upsert”一起使用。我正在替换我最初拥有的一些丑陋的代码。
我真的很喜欢重构的干净程度,但我的一个要求是,如果创建了新记录,我需要捕获 _id 以立即在另一个进程中使用。
问题是,如果记录不存在并且它执行“更新插入”,则返回为空。
我试过 returnNewDocument: true & false 但没有运气。
这是我的代码的结构:
Model.findOneAndUpdate(
{ "user_email" : req.body.userEmail},
{ $set: { "property_1" : req.body.prop1, "property_2": req.body.prop2 } },
{
upsert: true,
returnNewDocument: true
},
function(err, data){
if(err)
console.log('Error in find one and update');
console.log('Show data result: ', data);
})
我认为将 returnNewDocument 更改为“false”可以解决问题,因为它应该返回原始文档,但这不起作用。
有什么想法吗?
谢谢大家!!
【问题讨论】:
-
你在使用
mongoose吗? It recognizesnewinstead ofreturnNewDocument. -
另外,下次你问这样的问题时,请确保你清楚地说明你正在使用的库 - 在这种情况下是 mongoose。
-
谢谢,maowtm。看起来它成功了。我认为猫鼬是在标签中推断出来的。下次我一定会明确说明。
标签: node.js mongodb express mongoose