Javascript 如何在阵列中获取firestore收集响应?

Javascript 如何在阵列中获取firestore收集响应?,javascript,arrays,node.js,google-cloud-firestore,Javascript,Arrays,Node.js,Google Cloud Firestore,当我在云firestore中查询时,是否有任何方法可以获得数组格式的响应? 我知道两种方式,但我想知道是否还有其他方式与此直接相关 const queryRef = await db.collection('xyz').where('time','==',29).get() const array = [] queryRef.forEach(doc => { array.push(doc.data()) }) 还有另外一种方式也像这样 const array2 = queryR

当我在云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方法的情况下获得相同的响应?如果可能,如何计算满足查询的响应数 像


我不知道我在这个查询中得到了多少文档,直到我执行或存储到一个数组中

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

关于使用
wait
计算查询结果,这里还有第二个问题:

const queryRef = await db.collection('xyz').where('time','==',29).get()
该代码具有误导性,因为该查询的结果不是引用。这是一个好主意。但是,如果需要该对象的结果数,只需访问生成的文档数组:

const count = queryRef.docs.length

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

我知道,但有什么方法或方法可以解决此问题?解决什么?请仔细阅读我的答案。如果你正在寻找一种方法来计算我建议的文档,我认为你应该做一个网络搜索。我明白你的意思,但使用这意味着我必须使用一个额外的变量,我想以一种更有效的方式编写这段代码。这就是我问这个问题的原因。如果可能的话,你能告诉我关于我的问题的任何方式吗?这部分是我想问的关于我的第一个问题。你现在所做的没有任何低效之处。如果您认为自己存在性能问题,请对代码进行基准测试,并在做出更改之前找出性能问题的确切位置。
const count = queryRef.docs.length