【问题标题】:How to get sub-collections with Firebase firestore? [duplicate]如何使用 Firebase Firestore 获取子集合? [复制]
【发布时间】: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。见stackoverflow.com/questions/46596532/…
  • 我在Ab8F ... 8AJC 文档下只看到一个集合。你在哪里说不止一个?

标签: javascript firebase react-native google-cloud-firestore


【解决方案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());
                    });
                });
        });
    });

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2021-05-07
    • 2020-08-19
    • 1970-01-01
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    相关资源
    最近更新 更多