Javascript 获取快照元素的计数

Javascript 获取快照元素的计数,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我试图根据一个值对我的用户进行排名,为此,我试图在按一个名为“赢得的积分”的值排序后遍历列表,但是我得到了错误消息dataSnapshot.numChildren不是一个函数 下面是我的代码 return rankref.orderBy("earned_points").limit(10).get().then(function(dataSnapshot) { let i = 0; console.log(dataSnapshot) dataSnapshot.

我试图根据一个值对我的用户进行排名,为此,我试图在按一个名为“赢得的积分”的值排序后遍历列表,但是我得到了错误消息
dataSnapshot.numChildren不是一个函数

下面是我的代码

return rankref.orderBy("earned_points").limit(10).get().then(function(dataSnapshot) {
      let i = 0;
      console.log(dataSnapshot)
      dataSnapshot.forEach(function(childSnapshot) {
        const r = dataSnapshot.numChildren() - i;
        console.log(childSnapshot)
        updates.push(childSnapshot.ref.update({rank: r}));
        leaderboard[childSnapshot.key] = Object.assign(childSnapshot.val(), {rank: r});
        i++;
      });

      updates.push(leaderboardRef.set(leaderboard));
      return Promise.all(updates);
这应该为每个子快照添加一个排名,然后创建一个名为排行榜的新节点

知道我为什么会得到这个吗?我刚从实时数据库切换到firestore,不知道发生了什么

我刚从实时数据库切换到firestore,不知道发生了什么

在firestore中,没有
DataSnapshot
,firestore使用集合和文档的概念

方法
numChildren()
在类内部

该方法位于类
CollectionReference
中,它返回一个
QuerySnapshot
,因此当错误
dataSnapshot.numChildren不是一个函数时,您会得到一个

检索集合中所有文档的示例:

db.collection("cities").get().then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
    // doc.data() is never undefined for query doc snapshots
    console.log(doc.id, " => ", doc.data());
   });
});
选中此项: