计算键数

时间:2017-10-31 22:24:56

标签: firebase google-cloud-functions

我想计算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

我想要的是在群组中没有成员时删除整个群组。

1 个答案:

答案 0 :(得分:1)

您的代码存在一些问题:

    来自event
  1. ,您需要从ref获取event.data.ref,而不是event.ref 见:https://firebase.google.com/docs/reference/functions/functions.Event#data

  2. numChildren是一个函数,而不是属性,所以你可以调用console.log(event.data.ref.numChildren())

  3. Firebase会自动删除没有子节点的节点。因此,使用Groups-> GroupID->(无子项)获取Firebase数据是不可能的。 Firebase会自动删除GroupID。

  4. 您可以检查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()
            }
        })