2017-05-27 5 views
0

Ich versuche, JSON-Daten aus Anfrage Körper zu analysieren. Der Körper ich in Anfrage bekommen, ist wie:Iterieren über Jsonarray Firebase Cloud-Funktionen

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

und ich Mitglieder aus als:

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

und Konsolenprotokoll für Mitglieder:

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

Ich möchte über iterieren dies habe ich versucht:

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

Das Problem ist, dass ich über dieses JSON-Array nicht iterieren kann. Es throughs Tippfehler:

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) 

von einigen anderen Fragen, die ich auch versucht haben:

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

und:

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

diese immer durch Mitglieder Länge etwa 100 und melden Sie sich jedes Zeichen in das Array.

Kann mich jemand hier korrigieren, um über JSON-Array mit JSON-Objekten zu iterieren?

Antwort

0

Der Wert Ihrer members-Eigenschaft ist eine Zeichenfolge, während forEach nur in einem Array (und einem Firebase-Snapshot) vorhanden ist.

Im Moment Sie die Daten im String JSON.parse() auf sie durch den Aufruf codiert iterieren kann:

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); 
}); 

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

Aber sollten Sie wirklich herausfinden, warum die Daten als gespeicherte eine Zeichenfolge anstelle von JSON.