如何使用 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 获取子集合