我正在用猫鼬 findOneAndUpdate 更新并返回(新对象)数据库中的现有对象,但出现错误
错误
response is not defined
at Function.module.exports.updateProfile ........
在路由器文件中
router.post('/edit_profile', (req, res) => {
let updateProfile = new Profile({
name: req.body.name,
email: req.body.email,
username: req.body.username,
gender: req.body.gender,
bio: req.body.bio,
user_id: req.body.user_id
});
console.log(updateProfile); //consoling data Place(1)
Profile.updateProfile(updateProfile.user_id, (err, user) => {
if (err) throw err;
else {
console.log("Update User");
console.log(user);
res.json({
user: user
})
}
})
})
地方(1)处的确认数据
{ _id: 5c9cd517b3b7db248c6d7981,
name: 'Shivva',
email: 'ritinbhardwaj933@gmail.com',
username: 'zzz',
gender: 'Male',
bio: 'I am HOwdy Member',
user_id: '5c9cd47bf3d9bb1ea8cbfcbe' }
在profile.js中
module.exports.updateProfile = (id, callback) => {
let query = { user_id: id };
console.log(query); //consoling data Place(2)
Profile.findOneAndUpdate(query, { $set: response }, { new: true }, (err, user) => {
if (err) throw err;
else {
callback(null, user);
}
});
}
在Place(2)处的确认数据
{ user_id: '5c9cd47bf3d9bb1ea8cbfcbe' }
错误
我收到的错误是响应未定义Function.module.exports.updateProfile
错误
可接受的解决方案有效,但现在返回错误
collection.findAndModify is deprecated. Use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead
答案 0 :(得分:0)
如果仔细观察,在此行中您使用了变量响应,但从未初始化过它。
Profile.findOneAndUpdate(query, { $set: response }, { new: true }, (err, user) => {
该响应词应替换为具有所需更改的对象,例如{ name: 'jason bourne' }
老实说,您不需要像下面所做的那样创建实例,因为您没有在任何地方使用它。
let updateProfile = new Profile({
name: req.body.name,
email: req.body.email,
username: req.body.username,
gender: req.body.gender,
bio: req.body.bio,
user_id: req.body.user_id
});