2017-11-24 10 views
-1

私はarray.forEach()機能を使用していると私はnodeJS: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 
+2

私はparsebodyが配列ではないと思います –

+0

'parsedBody'が配列(' parseBody instanceof Array'など)であるかどうかを確認します。 – KooiInc

+0

@Andreas彼は 'parseBody.additionalData'の' parseBody'をデコードしようとしています – Azuloo

答えて

1

parseBodyは、オブジェクトのように見えます表記forEachメソッドを使用するには配列が必要です。 parseBodyを配列に変換すると、問題は解決されます。

がここに一つの可能​​な解決策である、配列にそれを有効にするには:私はparseBodyがオブジェクトではなく、あなたがforeachのを使用傾けるように配列だと思う

var arr = Object.keys(parseBody).map(function(key){ return parseBody[key]; }); 
+0

parseBodyオブジェクトを配列に追加する。私はparseBody.toArray(array_result)=> {array_result.forEach((element)=> {console.log( 'path 3');})を使用して試しました。しかし、それは動作しません。 – computerguy1234

+0

可能な方法で私の答えを更新しました。 –

0

、おそらくこれを試してみてください。

for(var key in parseBody){ 
console.log("result: " + parseBody[key]); 
} 
関連する問題