为大型数据集获取numChildren

时间:2015-08-28 17:55:09

标签: firebase

我有一个可能有数万名儿童的节点,我需要能够在不下载整个数据的情况下获取它拥有的子节点数。

根据我的理解,使用on('value')函数并使用DataSnapShot.numChildren(),将导致该节点的整个数据在被计数之前首先被下载。

2 个答案:

答案 0 :(得分:3)

使用on('value')确实会下载整个节点。但是,您可以使用其REST API的shallow功能仅下载密钥,然后您可以对其进行计数。

curl 'https://samplechat.firebaseio-demo.com/.json?shallow=true&auth=CREDENTIAL'

答案 1 :(得分:1)

我认为Firebase目前没有这样做的操作。您始终可以在父对象下保留一个反映子项数的属性,并在添加新子项时以原子方式更新它。

例如(在Javascript中):

var ref = new Firebase({base_url}/{parent_id}/children_count); ref.transaction(function(currentVal){ return (currentVal || 0) + 1; });