如何从我的 Firebase 集合中获取记录计数?

问题描述 投票:0回答:1

我有一个 Firebase 数据库,其中有一个名为lines的集合。我正在尝试获取行记录的总数。我最初尝试过这个:

const count = firestore.collection('lines').get().then(snapshot => snapshot.docs.length);

...但这会迫使 firebase 读取所有行记录。

我想知道是否有一种更快、更便宜的方法来获取记录计数。

我试过这个:

const count = firestore.collection('lines').count();

这给了我这个对象:

{
   "_query":{
      "_firestore":{
         "projectId":"xxx-12345"
      },
      "_queryOptions":{
         "parentPath":{
            "segments":[
               
            ]
         },
         "collectionId":"lines",
         "converter":{
            
         },
         "allDescendants":false,
         "fieldFilters":[
            
         ],
         "fieldOrders":[
            
         ],
         "kindless":false,
         "requireConsistency":true
      },
      "_serializer":{
         "allowUndefined":false
      },
      "_allowUndefined":false
   },
   "_aggregates":{
      "count":{
         
      }
   }
}

...但我在这里看不到计数(除了

count
,但它是一个空对象)。

以尽可能少的读取次数从 Firebase 集合中获取记录计数的最佳方法是什么?

谢谢!

javascript firebase google-cloud-firestore
1个回答
0
投票

与所有 Firebase 查询方法一样,count 方法是异步的,并返回一个 Promise,该 Promise 在查询完成时变为已解决。 您需要等待承诺才能获得计数值。 请参阅 documentation 中的示例(假设您使用的是 Firebase Admin SDK),并注意

await
关键字的使用:

const collectionRef = db.collection('cities');
const snapshot = await collectionRef.count().get();
console.log(snapshot.data().count);

如果您更喜欢使用

then
而不是
await
,您也可以这样做,就像您显示的其他查询一样。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.