0

看到,火力附加功能,所以我一直在試圖讓他們使用..計數子對象

這裏是我的數據是如何構成的:

-feed1 
    --child count = 0 
    --childs 
    ---1 
    ---2 
    ---3 
-feed2 
    --child count = 0 
    --childs 
    ---1 
    ---2 
    ---3 
-feed3 
    --child count = 0 
    --childs 
    ---1 
    ---2 
    ---3 

我的目標是每個飼料對象以便能夠統計每個「孩子」字段有多少個孩子更新了每個孩子的數量。

這是我到目前爲止..我測試它通過添加一個子對象,而且似乎沒有觸發該功能。我懷疑它是與它的通配符元素,但無法真正弄清楚如何做到這一點

var functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 
admin.initializeApp(functions.config().firebase); 

exports.countParent = functions.database.ref('{schoolid}/childs').onWrite(event => { 
    return event.data.ref.parent().child('childCount').set(event.data.numChildren()); 
}); 

任何想法?

+0

您的日誌中有任何錯誤? –

回答

1

檢查您的error logs in the Firebase Console,我敢打賭你會在那裏看到一個錯誤。

Parent is a property, not a function

即使您修復了函數中的錯誤,也很容易出錯。 numChildren()效率低下,你應該使用一個事務。

我修改從我們Child Count example on Github工作代碼架構:

exports.countParent = functions.database.ref("{schoolid}/childs/{childid}").onWrite(event => { 
    var collectionRef = event.data.ref.parent; 
    var countRef = collectionRef.parent.child('childCount'); 

    return countRef.transaction(function(current) { 
    if (event.data.exists() && !event.data.previous.exists()) { 
     return (current || 0) + 1; 
    } 
    else if (!event.data.exists() && event.data.previous.exists()) { 
     return (current || 0) - 1; 
    } 
    }); 
}); 

這應該是一個很好的起點。

+0

哦,我的錯!抱歉!!!我沒有意識到有一個兒童計數的例子..不會有困擾的計算器!非常感謝 –