[英]Changing result of the findOne moongose
我正在一个节点项目中工作,需要帮助。
我有回调函数,它执行方法 findOne,有 o 结果,但我无法更改结果的属性。
前任。 数据
{
name: "John",
age: 30,
}
前任。 回调函数。
this._userRepository.findOne({}, (err, user) => {
if (err) {
return callback({ code: 404, message: "User not found" }, []);
}
user.name = "edson";
return callback("", user);
});
但是用户名在返回时不会改变。
前任。 结果
{
name: "John",
age: 30,
}
预期结果
{
name: "edson",
age: 30,
}
您实际上是在尝试更新数据库中user
的值吗? 如果是这样,我认为您需要调用user.save()
您需要在返回任何内容之前使用user.save()
,如下所示,
user.name = "edson";
user.save();
return callback("", user);
或使用findOneAndUpdate()
如下所示
const filter = {};
const update = { name : "edson"};
this._userRepository.findOneAndUpdate(filter, update, {upsert: true}, function(err, doc) {
if (err) return res.send(500, {error: err});
return res.send('Succesfully saved.');
});
有关更多详细信息,请参阅https://mongoosejs.com/docs/tutorials/findoneandupdate.html
尝试将您的代码包装在async
函数中,然后运行以下代码
await this._userRepository.findOneAndUpdate({}, {$set: { name: 'edson' }});
findOneAndUpdate
方法接受一个过滤器和一个包裹在 $set 键中的对象。 这种方法要快得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.