编辑:我写了一个查询,该查询应返回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());
});
答案 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
语句,以确保云函数知道您的(异步)读写操作何时完成。