我想计算firebase云功能中节点中的键数。
我有这个数据库结构:
-- groups
-- groupID
-- information
-- members
我从组中删除成员时触发事件。
exports.onDeleteMember = functions.database
.ref('/groups/{groupId}/members')
.onDelete(event => {
console.log(event.ref.numChildren);
})
但是,如何以最有效的方式计算该特定组中的其余成员?我想做一个event.ref.numChilderen,但这不起作用,因为我收到了这个错误:TypeError: Cannot read property 'numChildren' of undefined
。
我想要的是在群组中没有成员时删除整个群组。
答案 0 :(得分:1)
您的代码存在一些问题:
event
的,您需要从ref
获取event.data.ref
,而不是event.ref
见:https://firebase.google.com/docs/reference/functions/functions.Event#data
numChildren是一个函数,而不是属性,所以你可以调用console.log(event.data.ref.numChildren())
Firebase会自动删除没有子节点的节点。因此,使用Groups-> GroupID->(无子项)获取Firebase数据是不可能的。 Firebase会自动删除GroupID。
您可以检查numChildren是否为1,如果是,则从快照中删除信息节点。像这样:
exports.onDeleteMember = functions.database
.ref('/groups/{groupId}/members')
.onDelete(event => {
// get the parent ref /groups/groupId children count
if (event.data.ref.parent.numChildren() == 1) {
// only 'information' left
event.data.ref.parent.child('information').remove()
}
})