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

哦,我的错!抱歉!!!我没有意识到有一个儿童计数的例子..不会有困扰的计算器!非常感谢 –