Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从cloud firestore仅获取数据而不获取任何元数据?_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript 如何从cloud firestore仅获取数据而不获取任何元数据?

Javascript 如何从cloud firestore仅获取数据而不获取任何元数据?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,是否可以仅从Cloud Firestore获取数据 现在,我正在从一个集合中提取所有文档,然后使用loop获取已保存到Firestore的唯一数据,如下所示: const data = {}; const snap = await db.collection("rooms").where("ppl","array-contains", myUsername).get({source:"cache"}); for (let i = snap.size -1; i >= 0; i--){

是否可以仅从Cloud Firestore获取数据

现在,我正在从一个集合中提取所有文档,然后使用loop获取已保存到Firestore的唯一数据,如下所示:

const data = {};
const snap = await db.collection("rooms").where("ppl","array-contains", myUsername).get({source:"cache"});

for (let i = snap.size -1; i >= 0; i--){
    const {room} = snap.docs[i].data();

    const snapshot = await db.collection(`rooms/${room}/msgs`).orderBy("dt","desc").limit(50).get({source:"cache"});

    const tempMessages = [];

    if (len2 > 0) {
       for (let k = 0; k < len; k++) {
         tempMessages = [...tempMessages, snapshot.docs[k].data()];
       }
    }
    data = { ...data, [room]: tempMessages};
}
setRoomsMessages(data);
const data={};
const snap=await db.collection(“rooms”).where(“ppl”,“array contains”,myUsername).get({source:“cache”});
对于(设i=snap.size-1;i>=0;i--){
const{room}=snap.docs[i].data();
const snapshot=await db.collection(`rooms/${room}/msgs`).orderBy(“dt”,“desc”).limit(50).get({source:“cache”});
常量tempMessages=[];
如果(len2>0){
for(设k=0;k
现在我想要什么

我只想获取
snapshot.docs[k].data()的数组(所需数据


为什么?因为我想获取
所需的
数据,然后直接将其传递到
状态
。还有,我不需要两个嵌套循环,我只循环
房间
,而不是每个
房间的消息

,我不清楚你在这里想做什么。为什么要删除循环?这一点也不慢。查询过程中花费的大部分时间是客户端和服务器之间的往返。你不能加快速度。因为我有两个
集合
一个用于
用户
,一个用于
消息
,所以我必须为
嵌套两个
,假设有50个
用户
,我们为每个
用户
获取50条
消息,所以我们将面临
50x50
循环,还有我的表演。因为即使从
cache
列出消息也需要5秒钟。我知道
snap.docs
是一个数组,但它有很多元数据。我想要这样的东西,但我已经将干净的数据存储到Firestore。我认为您可能正在尝试在出现实际性能问题之前进行优化。请编辑您的问题,以更清楚地显示什么比您希望的慢,以及您如何对代码进行基准测试。您的基准不应该包括执行查询所需的时间,因为您无法控制这一点。我不认为你会找到任何方法来优化简单的for循环。这个问题已经在这里得到了回答[1],但是,默认情况下,对firestore的查询会收取元数据费用。如果你想提高应用程序的性能,你可以优化firestore中存储的数据的结构[1]