[英]nodeJS: forEach loop is not a function, error
我正在使用array.forEach()
函数,但出现错误
parsedBody.forEach不是一个函数。
parseBody
会产生一个值,并且我在其他方法中使用过forEach
并且该函数运行良好。 那么为什么forEach
在这种情况下不起作用?
编辑:parseBody是一个对象。 如何将其转换为数组?
(server.js):
console.log('- before request.post');
request.post({
url: `${dc_link}/audit`, //includes dc_IP, dc_port and /audit
headers:
{
"jwt": jwt.sign(token, jwtSecret)
}
}, function(error,response,body){ //*
console.log('path 0');
console.log('error:', error);
let parseBody = JSON.parse(body);
console.log('parseBody.additionalData', parseBody.additionalData);
parseBody.forEach(function(element){ //**HERE
console.log('path 3');
});
}
(console.log):
[stdout] - before request.post
[stdout] start respondWithJSON
[stderr] /app/server.js:435
[stderr] parseBody.forEach(function(element, index, array){ //*
[stderr] ^
[stderr] TypeError: parseBody.forEach is not a function
[stderr] at Request._callback (/app/server.js:435:15)
[stderr] at Request.self.callback (/app/node_modules/request/request.js:188:22)
[stderr] at emitTwo (events.js:106:13)
[stderr] at Request.emit (events.js:191:7)
[stderr] at Request.<anonymous> (/app/node_modules/request/request.js:1171:10)
[stderr] at emitOne (events.js:96:13)
[stderr] at Request.emit (events.js:188:7)
[stderr] at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1091:12)
[stderr] at IncomingMessage.g (events.js:286:16)
[stderr] at emitNone (events.js:91:20)
[stdout] path 0
[stdout] error: null
[stdout] parseBody.additionalData iAAGtYgBAGkCBFoW4F4DARkDAQkDAQUDAQ
parseBody似乎是一个对象,因为您使用点表示法对其进行了访问。 您需要一个数组才能使用forEach方法。 将parseBody转换为数组,即可解决问题。
要将其变成数组,这是一种可能的解决方案:
var arr = Object.keys(parseBody).map(function(key){ return parseBody[key]; });
我认为parseBody是一个对象而不是数组,因此您不能使用foreach,也许可以尝试以下方法:
for(var key in parseBody){
console.log("result: " + parseBody[key]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.