javascript - Mongoose 预保存 Hook 中的异步功能不起作用

标签 javascript node.js mongoose

在预保存 Hook 中调用异步函数会向我返回 undefined 密码。我在这里从根本上误解了 async 吗?我已经在我的应用程序的其他领域成功地使用了它,它似乎工作正常......

userSchema.pre('save', function (next) {

  let user = this

  const saltRounds = 10;

  const password = hashPassword(user)
  user.password = password;

  next();

})


async hashPassword(user) {

    let newHash = await bcrypt.hash(password, saltRounds, function(err, hash) {

    if (err) {
      console.log(err)
    }

    return hash    

  });

  return newHash

}

最佳答案

我认为您需要处理 hashPassword 返回的 promise :

 hashPassword(user)
 .then(password => {user.password = password
                    next()}
 )

我不认为你可以将 userSchema.pre 变成一个异步函数。

关于javascript - Mongoose 预保存 Hook 中的异步功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48799479/

相关文章:

javascript - 信息窗口 'cannot call method "打开“未定义”

node.js - 转换错误 : Cast to ObjectId failed at path "_id"

php - 像谷歌搜索一样在 div 中加载外部 url

javascript - do-while 循环和 window.alert 消息

javascript - 图像 blob 加载和 css 过滤器

mysql - SequelizeJS 关系,同模型

mysql - 如何在 Node JS 上使用一对多关系表从 mysql 查询 js 创建 json 结果?

node.js - net::ERR_CONNECTION_CLOSED 在 mongo 文档中有超过 7 个子文档时在远程服务器上

node.js - Handlebars : query and sum

node.js - 我的文档在 NodeJS 的 mongodb 中没有被删除