未为猫鼬函数findOneAndUpdate定义响应?

时间:2019-03-28 14:22:13

标签: node.js mongodb express mongoose

我正在用猫鼬 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

1 个答案:

答案 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
});