如何使用firebase函数获取子值为false的itemcount?

时间:2018-05-27 09:48:57

标签: node.js firebase-realtime-database google-cloud-functions

编辑:我写了一个查询,该查询应返回ticked为true的所有项目。我尝试设置tickedItemsQuery的计数,但它告诉我count不是一个函数。 numChildren也不是一个函数。如何设置查询计数?

exports.tickedBoxesCount = functions.database.ref('/listItems/{list_id}').onWrite(event => {
const ref = event.data.ref.parent;
const list_id = event.params.list_id;
const tickediItemsQuery = ref.orderByChild("ticked").equalTo(true)
admin.database().ref(`/lists/${list_id}/tickedCount`).set(tickediItemsQuery.count());
});

1 个答案:

答案 0 :(得分:0)

这行代码创建查询:

const tickediItemsQuery = ref.orderByChild("ticked").equalTo(true)

请注意,它不执行查询,它只是定义它。因此,你无法从这一行知道匹配孩子的数量。

要确定计数,您需要执行查询,并确定生成的快照中的子项数:

return tickediItemsQuery.once("value").then(function(snapshot) {
  return admin.database().ref(`/lists/${list_id}/tickedCount`).set(snapshot.numChildren());
});

请注意,我还添加了必要的return语句,以确保云函数知道您的(异步)读写操作何时完成。