【发布时间】:2016-10-24 11:04:53
【问题描述】:
以下数据是从request() 库返回的。
var data = [{
service: "trains",
...
}, {
service: "buses",
...
}]
我在 NodeJS 应用程序上有以下代码。
request(options)
.then(data => {
data.forEach(record => {
if (record.service !== 'buses') {
return next('You do not have permission to access buses.')
}
return next()
})
})
.catch(err => next(err))
所以当这段代码在 Node 上运行时,它总是评估为 false?这对我来说很奇怪,因为在没有请求的情况下运行它并且直接使用原始响应似乎可以正常工作?我猜这是异步行为的问题?
【问题讨论】:
-
似乎下一个方法被调用不止一个。究竟是什么评估为假?
-
是的,评估结果为假。此外,如果你想遍历每个元素,你为什么要 return next()
-
您也可以使用 Array.some 方法避免 forEach 循环。一个可能的解决方法: request(options).then(data=>data.some() ? next('error') : next()).catch(...)
-
看来您要返回下一个继续下一个。那么,不是吗?这将使您返回权限错误,甚至不检查“总线”服务。你到底想通过这个承诺来实现什么?
-
抱歉,数据来自我正在检查以确保总线服务存在的用户 ID。否则,它们是被禁止的。
标签: node.js loops asynchronous