asynchronous或同步bcrypt函数使用node.js为了生成哈希?

我目前正在尝试在node.js中为我的项目制作身份validation模块?

我已经看到了一些使用bcrypt生成哈希的例子

https://github.com/bnoguchi/mongoose-auth/blob/master/lib/modules/password/plugin.js https://github.com/Turbo87/locomotive-passport-boilerplate/blob/master/app/models /account.js

但是,由于某些原因,他们正在使用bcrypt.hashSync()函数。 由于bcrypt是很好的,因为它很费时,为了不阻止代码,使用asynchronous函数不是更明智吗,即:

User.virtual('password') .get( function () { return this.hash; }) .set( function (password) { bcrypt.hash('password', 10, function(err, hash) { this.hash = hash; }); }); 

你能解释一下我哪个更好,为什么? 谢谢!

是的,如果可能的话,你会希望使用asynchronous版本,所以在密码散列期间你不会占用你的节点处理。 在引用的两种源代码情况下,代码都使用同步版本,因为它使用的方法是同步的,所以作者别无select,只能使用同步版本。

您不能在同步方法内进行asynchronous调用。 尝试在设置密码时使用单独的方法。

我刚刚提交了一个拉请求,所以有人的项目就是这样做的。 看看这里: https : //github.com/nickpoorman/CrowdNotes/commit/e268c80a9cacddbc0215bf0e2b7aa31c0a4c785f