(猫鼬)当isModified是假的吗?

时间:2018-03-23 04:14:43

标签: node.js mongodb mongoose

我有类似的东西

UserSchema.pre('save', function(next) {
  console.log(this.isModified());

  next();
});

输出总是true,阅读文档说明:

  

如果修改了此文档,则返回true,否则返回false。

当函数返回false时,我找不到一个案例。

更新

这就是我调用save函数

的方式
let user = new User;

  user.email =  req.body.email;
  user.displayName =  req.body.displayName;
  user.avatar =  req.body.avatar;
  user.password =  req.body.password;

  user.save((err, userStored) => {
    if (err)
      return res.status(500).send({Message: `Error. ${err}`});

    res.status(200).send({product: userStored});
  })

1 个答案:

答案 0 :(得分:2)

这是可能的,因为您始终在修改该数据。如果要检查(isModified === false),请尝试使用以前的值更新文档(与之前的值相同)。您将在nModified中获得错误。

像,

let updatedata = {
        'nOtp': nOtp
    };
    Model.update({_id: 'your_id'}, { $set: updatedata }, (error, doc) => {
        if (error) return res.status(500).json(error);
        // **Here below line you can check. If values is same as before**
        if (doc.nModified === 0) return res.status(417).jsonp({message: 'document is not modified'});
        return res.status(200).json({message: 'success'});
    });

您可以在方法中执行相同操作