【问题标题】:Fetching all collections in Firestore获取 Firestore 中的所有集合
【发布时间】:2018-06-23 19:50:31
【问题描述】:

我在我的项目中使用 Firestore,所以我想在我的项目中显示所有集合名称。

是否可以从 Firebase 项目中获取所有集合名称。

谢谢..

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    您可以执行以下操作:

    const admin = require("firebase-admin");
    const db = admin.firestore();
    
    db.listCollections()
      .then(snapshot=>{
          snapshot.forEach(snaps => {
            console.log(snaps["_queryOptions"].collectionId); // LIST OF ALL COLLECTIONS
          })
      })
      .catch(error => console.error(error));
    
    

    这适用于 NodeJS。
    请记住,您需要下载 firebase-admin 并为 Firebase 服务器端进行必要的配置。

    【讨论】:

      【解决方案2】:

      获取顶级集合列表的公共 API 有限。移动客户端(Android、iOS、Web)没有 API。 Node.js 管理员客户端在Firestore 上有listCollections() 来获取该列表。或者,如果您要查找嵌套在文档下的子集合,请使用 DocumentReference.listCollections()

      如果您想在任何平台上获取列表,您应该在已知文档 ID 内的已知集合中自己维护该列表。

      【讨论】:

      • 谢谢 Doug Stevenson,实际上 getCollections() 用于子收藏,但我正在寻找收藏列表,而且它在网络上也不支持。
      • 我链接的方法是 Firestore 上的一个方法,它将为您提供所有顶级集合(不是文档的子集合)。但是,正如我所说,移动客户端不支持此类操作。
      • getCollections() 已替换为 listCollections()
      • @LahiruChandima 查看 API 文档,似乎它们仍然存在于相同的文档中。
      【解决方案3】:

      您可以创建一个单独的集合(例如listOfCollections),其中包含所有其他集合名称作为文档或在一个文档中的字符串数组中作为替代。

      然后,每当您添加新集合时,首先将其名称添加到 listOfCollections

      【讨论】:

      • 优秀的解决方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2020-08-08
      • 2021-07-01
      相关资源
      最近更新 更多