如何使用 Firebase Firestore 获取子集合? [复制]

Posted

技术标签:

【中文标题】如何使用 Firebase Firestore 获取子集合? [复制]【英文标题】:How to get sub-collections with Firebase firestore? [duplicate] 【发布时间】:2019-09-01 09:19:20 【问题描述】:

我想通过文档获取所有集合,我不知道该怎么做我是firestore的新手。

Firebase.firestore()
      .collection("reservations")
      .doc(tripUid)
      .get()
      .then(doc => 
        console.log(doc.doc.data());
      ).catch(error => 
        console.log("Error getting document:", error);
      );

My Firebase firestore data

【问题讨论】:

Cloud Firestore 的客户端 SDK 中没有获取所有子集合列表的 API。见***.com/questions/46596532/… 我在Ab8F ... 8AJC 文档下只看到一个集合。你在哪里说不止一个? 【参考方案1】:

所以子集合仍然遵循 Firestore 的整体路径理念。举个例子,假设您有一个名为“Orders”的集合,还有一个名为“Products”的子集合。要获取特定订单的所有产品文档,您可以编写类似 Firebase.firestore().collection("Orders/orderid123/Products").get() 的内容,其中 orderid123 是您想要产品的订单的 ID。

查看您的数据模型,您实际上已将子集合命名为看似生成的 ID。因此,在上面的示例中,您将使用 'ymuIjdv...' 而不是使用“Products”。您可能想重新审视如何命名此子集合,以赋予它一个更易读的名称。看起来您正在为子集合文档生成 ID,并将其用作子集合的名称。

在您的确切设置中,您可以通过Firebase.firestore().collection("reservations/" + tripUid + "/ymuIjdvwWnOr20XWVp6gwRKtmgD2").get() 来实现您的要求。这将获取保留下的所有子集合文档,其中包含tripUid 变量和集合'ymuIjdvwWnOr20XWVp6gwRKtmgD2'。

【讨论】:

谢谢。你的解决方案奏效了。只是想问如何从firestore获得所有订单。包含子集合的整个集合。尝试了 firebase.firestore().collection("orders").get() 但它不起作用。 您好。有了新版本的 Firebase,会怎样?【参考方案2】:

这是 Firebase Admin SDK 的实现

希望这会有所帮助

firestore()
    .collection("reservations")
    .doc(tripUid)
    .listCollections()
    .then((subCollections) => 
        subCollections.forEach((subCollection) => 
            subCollection
                .get()
                .then((array) => 
                    array.docs.forEach((doc) => 
                        console.log(doc.data());
                    );
                );
        );
    );

【讨论】:

以上是关于如何使用 Firebase Firestore 获取子集合? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Firebase 控制台从 Firestore 中删除索引?

如何使用firebase-admin在firestore中将日期保存为时间戳?

如何在 Flutter 中使用 Firebase Auth 和 Firestore

如何使用 react-redux-firebase 从 firestore 获取子集合

如何使用 Flutter 配置 Firebase Firestore 设置

如何使用 AngularFire、Firestore 和 Firebase 分页到上一页