【发布时间】:2014-03-12 12:41:16
【问题描述】:
我正在使用 Bluebird 库进行某种 QA(问题/答案)应用程序。所以这是场景:
- 用户在表单中填写一些问题(例如 5 个问题)的答案。
- 一个问题有多个可能的答案:“问题有很多答案”
- 使用node.bcrypt 在数据库上对答案进行加密 (bcrypt)
- 循环遍历答案时,如果用户答案匹配,则无需继续检查该问题的答案。
所以在做同步的事情时,这是一个常见的问题,但我有点迷失了用 promises 做异步。
这是我不知道如何进行的示例:
.then(function(answers) {
var compare = Promise.promisify(bcrypt.compare);
// foreach answer, I need to check like this
// compare(answer.password, user.password).then(function(match){
// if (match) break; <-- something like this
// })
})
【问题讨论】:
-
您可能必须在循环之前单独获取加密答案,并在回调内部启动循环并进行基本检查
(if hash == password) break; -
@tymeJV 我想我不能这样做,因为当我使用 bcrypt 对密码进行哈希处理时,会从数据库先前生成的值中生成不同的值......这就是我需要 bcrypt 的原因比较函数...也许我错了...
-
不要把我的 bcrypt 回购放在我面前,但这听起来不错 - 回调地狱:\ - 这篇文章可能会有所帮助:stackoverflow.com/questions/13214862/…
标签: javascript node.js asynchronous promise bluebird