2017-05-27 16 views
0

リクエストボディからjsonデータを解析しようとしています。jsonarray firebaseの雲関数を繰り返し処理する

{ members: '[{"ContactName":"abc","ContactNumber":"+92------","Turn":"28/04/2017","mData":0}]', 
    cid: '-Kl8Yhi-3qCQ4E-iDFj6', 
    committeedetails: '{"admin":"+923064664223","description":"xyz\\nMembers 1\\nPKR 10"}' } 

と私はそれからメンバーを取得::私は要求してもらう体は次のようである私は、反復処理したい

[{"ContactName":"abc","ContactNumber":"+92--------","Turn":"28/04/2017","mData":0}] 

var body = req.body; 
var members = body.members; 

とメンバーのコンソールログですこれは私が試みた:

members.forEach(function(obj) { console.log("members",obj.id); }); 

今問題は、このjson配列に対して反復処理ができないことです。

for(var i= 0; i<members.length; i++){ 
     var obj = members[i]; 
     console.log("members"+i, obj); 
    } 

と::

for (var key in members){ 
      console.log("members",key); 
     } 

常にこれら部材の長さ約100で通って、各文字をログ私も試してみましたいくつかの他の質問から

TypeError: members.forEach is not a function 
    at exports.shareTurnWithMembers.functions.https.onRequest (/user_code/index.js:110:13) 
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:47) 
    at /var/tmp/worker/worker.js:638:7 
    at /var/tmp/worker/worker.js:622:9 
    at _combinedTickCallback (internal/process/next_tick.js:67:7) 
    at process._tickDomainCallback (internal/process/next_tick.js:122:9) 

:それは誤植エラーをスルー配列。

jsonオブジェクトを含むjson配列を繰り返し処理することができますか?

答えて

0

membersプロパティの値は文字列ですが、forEachは配列(およびFirebaseスナップショット)にのみ存在します。あなたはそれにJSON.parse()を呼び出すことによって文字列にエンコードされたデータを反復処理することができた瞬間のために

var val = { members: '[{"ContactName":"abc","ContactNumber":"+92------","Turn":"28/04/2017","mData":0}]', 
    cid: '-Kl8Yhi-3qCQ4E-iDFj6', 
    committeedetails: '{"admin":"+923064664223","description":"xyz\\nMembers 1\\nPKR 10"}' }; 

var members = JSON.parse(val.members); 

members.forEach(function(member) { 
    console.log(member); 
}); 

作業jsbin:https://jsbin.com/quboza/edit?js,console

しかし、データは次のように保存されているなぜあなたは本当に把握すべきですJSONの代わりに文字列を使用します。

関連する問題