【问题标题】:Date field not updating with .updateMany() - mongoose日期字段未使用 .updateMany() 更新 - mongoose
【发布时间】:2020-04-04 05:37:28
【问题描述】:

我正在更新我的应用程序的密码。密码散列和更新很好。我得到了 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.js mongodb express mongoose


    【解决方案1】:

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

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

    更多信息:here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 2021-06-23
      • 2021-03-17
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多