看到firebase添加了功能,所以我一直在尝试使用它们..
以下是我的数据结构:
-feed1
--child count = 0
--childs
---1
---2
---3
-feed2
--child count = 0
--childs
---1
---2
---3
-feed3
--child count = 0
--childs
---1
---2
---3
我的目标是让每个Feed对象能够计算出每个孩子的子女数量。字段有一个更新子计数字段,每个字段有多少。
这是我到目前为止所做的...我通过添加一个子对象来测试它并且似乎没有触发该函数。我怀疑它与它的通配符元素有关,但无法真正弄清楚如何做到这一点
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;
}
});
});
这应该是一个很好的起点。