首页 > 解决方案 > 日期字段未使用 .updateMany() 更新 - mongoose

问题描述

我正在更新我的应用程序的密码。密码散列和更新很好。我得到了 nModified: 1. 我注销并可以使用新密码登录,但日期字段永远不会更新?我怎样才能让该字段也更新?

router.put("/password/:id", (req, res) => {
  let user = req.body;
  let retrievedOldPassword = user.retrievedOldPassword.password;
  let result;
  let newPasswordHash;

  bcrypt.compare(req.body.oldPassword, retrievedOldPassword, function(
    err,
    res
  ) {
    if (err) {
      return err;
    }
    result = res;
    console.log(res);
  });

  if (result) {
  } else {
    bcrypt.hash(req.body.newPassword, 10, function(err, hash) {
      newPasswordHash = hash;
      // res.sendStatus(401);

      User.updateMany(
        { password: retrievedOldPassword },
        { password: newPasswordHash },
        { passwordCreated: Date.now() }
      )
        .then(user => {
          console.log(user);
          res.json(user);
        })
        .catch(err => console.log(err));
    });
  }
});

标签: node.jsmongodbexpressmongoose

解决方案


的第三个参数updateMany()是选项。您需要passwordCreated: Date.now()输入第二个参数,然后它将被更新:

User.updateMany(
    { password: retrievedOldPassword },
    { password: newPasswordHash, passwordCreated: Date.now() },
  )

更多信息:这里


推荐阅读