以下数据是从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?这对我来说很奇怪,因为在没有请求的情况下运行它并直接使用原始响应似乎工作正常?我想这是异步行为的问题?
答案 0 :(得分:3)
您正在循环遍历数组的所有元素,因此如果第一个元素与“总线”不匹配,则会导致“您无权访问总线”。
我认为您正在寻找的是检查数组中是否存在元素的方法。在你的情况下,像Array.filter
:
.then(data => {
if (data.filter(el => el.service === 'buses').length === 0) {
return next('You do not have permission to access buses.');
}
return next();
})