有人可以告诉我在哪里可以写我的 bcrypt-hashing 函数吗?

Can someone please tell me where can i write my bcrypt-hashing function?

exports.postLogin = (req, res) => {
  let { email, pass } = req.body;
  console.log(email);

  User.findOne({ email }, (err, result) => {
    console.log(email, pass, result.pass);
    if (err) {
      res.json({ status: 'failed', message: err });
    } else if (!result) {
      res.json({ status: 'failed', message: 'email or password are wrong' });
    } else {
      bcrypt.compare(pass, result.pass).then(async (isPassCorrect) => {
        if (isPassCorrect) {
          const token = await signToken(result.id);
          res.json({
            status: 'success',
            message: 'you logged in !!',
            token,
          });
        } else res.json({ status: 'failed', message: 'email or password are wrong!' });
      });
    }
  });
};

你的问题不是很清楚你想做什么,所以我猜对了。

如果我没看错,你正在寻找正确的位置以便在保存密码之前对密码进行哈希处理,这样你就可以在加密密码上使用 bcrypt.compare(),对吗?

如果是,您可以使用 mongooses pre-hook 在 mongoose 实际保存文档之前散列密码。为此,请将其添加到您的模型文件中

User.pre('save', async function (next) {
    await bcrypt.genSalt(12).then(async salt => {
        this.password = await bcrypt.hash(this.password, salt).catch(err => {
            return next(err)
        })
      }).catch(err => {
          return next(err)
    })
})