更改 findOne 猫鼬的结果
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);
});
但是 return 中的用户名没有变化。
例如。结果
{
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 键中的对象。这种方法快很多。
我在一个节点项目中工作,需要帮助。
我有回调函数,它执行方法 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);
});
但是 return 中的用户名没有变化。
例如。结果
{
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 键中的对象。这种方法快很多。