繁体   English   中英

如何在数组中获取 firestore 集合响应?

[英]How to get firestore collection response in an Array?

当我在云 Firestore 中查询时,有什么方法可以获得数组格式的响应? 我知道两种方式,但我想知道是否有任何其他方式与该方式直接相关

const queryRef = await db.collection('xyz').where('time','==',29).get()
const array = []
queryRef.forEach(doc => {
    array.push(doc.data())
})

还有其他方式也像这种方式。

 const array2 = queryRef.docs.map(doc => doc.data());

有什么方法可以在不使用外部 javascript 方法的情况下获得相同的响应,如果可能,我如何计算满足查询的响应数量,例如

const queryRef = await db.collection('xyz').where('time','==',29).get()

在我执行或将其存储在数组中之前,我不知道在此查询中获得了多少文档

您显示的所有代码都没有使用“外部 javascript 方法”。 您展示的 foreach 循环和map()都是非常标准的 JavaScript,并且都同样有效。 事实上,这是我见过的使用 Firestore 查询结果的两种最常见的方式。 我不清楚为什么你需要不同的东西。

关于使用await计算查询结果的第二个问题:

const queryRef = await db.collection('xyz').where('time','==',29).get()

该代码具有误导性,因为该查询的结果不是参考。 这是一个QuerySnapshot 但是,如果您想要该对象的结果数量,只需访问生成的文档数组:

const count = queryRef.docs.length

Firestore 不提供一种在不进行查询的情况下计算文档的方法。 没有 SQL 中的聚合函数。 如果您需要不带查询的文档计数,则必须在向集合中添加和删除文档时自己维护文档计数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM