解决 bcrypt return 承诺

Resolving bcrypt return promise

我正在尝试将 bcrypt 哈希函数的结果传递到下面的用户模型中。

我似乎无法思考如何有效地解决这个承诺。

代码如下:

router.post("/", async (req, res) => {
  req.body = sanitize(req.body);

  // SHA-256
  /* const bitArray = sjcl.hash.sha256.hash(req.body.data[2].value);
  const passwordHashed = sjcl.codec.hex.fromBits(bitArray); */

  const saltRounds = 10;

  const password = req.body.data[2].value;
  var passwordHashed;

  async function hash() {
    return await bcrypt.hash(password, saltRounds, function (err, hash) {});
  }

  const user = new User({
    username: req.body.data[0].value,
    email: req.body.data[1].value,
    password: hash(),
  });

  try {
    await user.save();
    res.status(200).json({ msg: "Success" });
  } catch (e) {}
});

这是我目前尝试过的方法,可能是错误的

不要将回调传递给 bcrypt.hash 然后你可以 await 它。

const user = new User({
    username: req.body.data[0].value,
    email: req.body.data[1].value,
    password: await bcrypt.hash(password, saltRounds),
});