Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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 Firestore如何获取顶级收藏内部文档列表?_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

Javascript Firestore如何获取顶级收藏内部文档列表?

Javascript Firestore如何获取顶级收藏内部文档列表?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,示例1)收款-单据-收款-单据-收款 例2)收集 示例1结构,我可以导入上一个集合中的所有文档列表 示例2结构,我无法获取集合中的所有文档列表 如何在文档列表中获取顶级集合 这是我的密码 // this is example1. this is working!! dbService .collection("users") .doc(uid) .collection(uid) .doc("video") .co

示例1)收款-单据-收款-单据-收款

例2)收集

示例1结构,我可以导入上一个集合中的所有文档列表

示例2结构,我无法获取集合中的所有文档列表

如何在文档列表中获取顶级集合

这是我的密码

// this is example1. this is working!!
  dbService
    .collection("users")
    .doc(uid)
    .collection(uid)
    .doc("video")
    .collection(uid)
    .onSnapshot((snapshot) => {
      snapshot.docs.map((doc, index) => {
        videoList.push(doc.data());
        console.log(doc.data());
      });
    });



// this is example2. this is not working !!!!!
  dbService
   .collection("users")
   .onSnapshot((snapshot) => {
    snapshot.docs.map((doc, index) => {
      videoList.push(doc.data());
      console.log(doc.data());
    });
  });

示例2是返回空数组。这是为什么?

从Firestore加载数据很浅。这意味着,如果从
用户
集合加载文档,则不会自动包含子集合中的任何数据


如果要从特定用户的
视频
子集合加载数据,则需要进行额外调用:

  dbService
   .collection("users")
   .onSnapshot((snapshot) => {
    snapshot.docs.map((doc, index) => {
      if (/* this is a user you are interested in */) {
        snapshot.ref.collection(videos).get().then((videos) => {
          videos.forEach((video) => {
            videoList.push(video.data());
          })
          console.log(doc.data());
        });
      }
    });
  });

如果要为所有用户加载所有视频,可以使用所谓的“集合组查询”:

  dbService
   .collectionGroup("videos")
   .onSnapshot((snapshot) => {
    snapshot.docs.map((doc, index) => {
      videoList.push(doc.data());
      console.log(doc.data());
    });
  });

如果您想在此处找到特定视频的用户ID,可以使用
doc.ref.parent.parent.ID

找到它,谢谢您的回答!我想要的是加载顶级集合中的所有文档,这是相同的吗?我照你说的做了,但我没有得到正确的结果。乍一看,第二个片段对我来说很好。什么东西不管用?因此:如果在调试器中逐行地遍历代码,那么哪一行是第一个没有完成预期任务的代码?在你对问题的描述中要详细和具体,因为这会增加有人能提供帮助的机会。