4

我想遍歷Firebase函數中的DataSnapshot屬性。這是我的代碼。Firebase的雲端函數:枚舉DataSnapshot屬性

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 => { 
      ... 
     }) 
    }) 

它似乎並不像memberIds是枚舉,因爲我的錯誤:

memberIds.forEach is not a function.

回答

4

memberIds將是一個Object - 不是Array - 因此使用forEach無法枚舉它。你可以,但是,訪問它使用child快照:

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

哦,哇。我無法相信我沒有意識到我正在這樣做。我正在嘗試將我在節點中使用的功能轉換爲Firebase雲端功能。原始用途使用Object.keys()來獲取密鑰,然後迭代它們。我忘記了Object.keys()也輸出一個數組。 –