4

Ich möchte in meiner Firebase-Funktion über DataSnapshot-Eigenschaften iterieren. Hier ist mein Code.Cloud-Funktionen für Firebase: Auflisten von DataSnapshot-Eigenschaften

alignmentsRef.once('value') 
.then(function(snapshot) { 
    snapshot.forEach(function(k) { 
     var itemId = k.key //itemId 
     var childData = k.val() //{downvotes: {memberId: "down"}, upvotes: {memberId: "up"}} 
     var memberIds = childData.downvotes // {memberId: "down"} 
     memberIds.forEach(l => { 
      ... 
     }) 
    }) 

Es scheint nicht, wie memberIds ist abzählbar, weil ich den Fehler:

memberIds.forEach is not a function.

Antwort

4

memberIds wird ein Object sein - kein Array - so dass Sie es forEach mit nicht aufzählen kann. Sie können jedoch als Snapshot unter Verwendung von child:

alignmentsRef 
    .once('value') 
    .then(function (snapshot) { 
    snapshot.forEach(function (k) { 
     k.child('downvotes').forEach(function (d) { 
      console.log(`${d.key} = ${d.val()}`); 
     }); 
    }); 
+0

Oh, wow. Ich kann nicht glauben, dass ich nicht wusste, dass ich das mache. Ich versuche eine Funktion, die ich im Knoten verwende, in eine Firebase Cloud-Funktion zu übersetzen. Die ursprüngliche Verwendung verwendet Object.keys(), um die Schlüssel abzurufen, und iteriert dann über sie. Ich hatte vergessen, dass Object.keys() auch ein Array ausgibt. –

Verwandte Themen