我需要一些帮助。
我的项目中有2个馆藏,一个叫做产品,另一个叫商店。
一个产品可以属于许多商店,因此,为了使该应用程序更具“性能”,我将所选产品信息复制到商店的子集合中,在本例中为商店>产品。
我的想法是创建一个云功能,该功能将监视任何产品的任何更新,然后通过更新值将这些更改反映在商店>产品子集合中。
我已经用相同的ID保存它。因此,例如,products
集合下的productID 1在 stores> products 子集合下具有相同的ID。
我的问题是,如何只查询产品子集合?这可能吗?
答案 0 :(得分:2)
这取决于您要查询什么。
如果要在给定商店文档的 ONE 的产品子集合中仅查询一个特定产品文档,请执行以下操作:
var docRef = db.collection("stores").doc(storeId).collection("products").doc(productId)
docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
}).catch(function(error) {
console.log("Error getting document:", error);
});
如果要查询给定商店的 ONE 的产品子集合(获取此子集合中的所有产品文档),请执行以下操作:
db.collection("stores").doc(storeId).collection("products").get()
.then(function(querySnapshot) {
//....
})
.catch(function(error) {
//....
});
如果要查询 ALL 个商店的产品子集合,请使用Collection Group Query,如下所示:
var productsCollGroup = db.collectionGroup('products');
productsCollGroup.get()
.then(function (querySnapshot) {
//....
})
.catch(function(error) {
//....
});
答案 1 :(得分:0)
您可以在此链接[1]上查看主题,特别是对于您的问题,您可以检查此答案[2]。
例如,他们提到有一系列文档,并且提供了如何在集合中搜索特定文档的答案。