以下数据从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吗?这对我来说很奇怪,因为在没有请求的情况下运行此程序,而直接使用原始响应似乎可以正常工作吗?我猜这是异步行为的问题吗?
最佳答案
您正在遍历数组的所有元素,因此,如果第一个元素与“ buss”不匹配,则将导致“您无权访问总线”。
我认为您正在寻找的是一种检查元素是否存在于数组中的方法。在您的情况下,例如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();
})