获取 orderByChild equalTo 中的项目数

Get number of items in orderByChild equalTo

我正在查看 firebase 文档以了解如何根据查询获取保存在我的数据库中的项目数量,我查看了这段代码(我认为)正是我正在寻找的内容,但不知道如何获取显示的项目数。

var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
ref.orderByChild("height").equalTo(0.6).on("child_added", function(snapshot) {
 console.log(snapshot.key());
});

console.log 应显示 2 个项目,因为有 2 个恐龙具有该高度。那么我怎样才能获得显示的项目数以显示在视图上呢?

我试过 console.log(snapshot.key().length);但是它显示了一个错误的数字

你可以试试这个:

var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
var shortDinosaurs = ref.orderByChild("height").equalTo(0.6);
console.log(shortDinosaurs.length);
shortDinosaurs.on("child_added", function(snapshot) {
 console.log(snapshot.key());
});

当您侦听 child_added 事件时,回调中的项目数将始终为 1。当您(例如)想要将每个项目添加到列表时,这非常有用。但是当你想计算项目的数量时,它就不太好了。

对于需要处理多个item的操作,监听value事件更简单:

var ref = new Firebase("https://dinosaur-facts.firebaseio.com/dinosaurs");
ref.orderByChild("height").equalTo(0.6).on("value", function(snapshot) {
 console.log(snapshot.numChildren());
})

此代码段还显示了另一块拼图:DataSnapshot.numChildren()