繁体   English   中英

nodeJS:forEach循环不是一个函数,错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM