扑查询firestore中的多个集合
问题内容:
我在玩弄颤抖,但遇到了我不知道的firestore问题。
假设我要检索客户的购买者历史记录,并且拥有一个如下所述的存储区,因此我在其中包含了一个包含user_id
“ s
”文档的“用户”集合,然后在其中具有了“产品”集合与包含的文档product_id
“我的目的是收集产品的ID为选定的用户,然后检索从产品集合产品价格?
-
使用者
- user_id_1
- 产品展示
- purchace_id
- product_id
- 数量
-
产品展示
-
product_id
- product_desc
- 价钱
我遇到的问题是,虽然我可以从用户表中获取产品的ID,但随后看不到如何像SQL一样使用这种数据的简单方法,我们可以对product_id进行简单的联接获取与ID匹配的价格?
任何帮助将非常感激。
感谢您的答复Frank van Puffelen
2单独的查询接缝合理,但第二个查询带来了其他问题,因为现在使用下面的代码,我可以从用户那里获取documents_id,然后对产品进行查询,一切看起来都很好,所以我认为我朝着正确的方向前进,因为我可以在循环中打印文档的ID以确保我访问的是正确的ID,但是当我更改它以获取文档的快照时,我可能无法访问其中的数据一些愚蠢或误解的东西,但是在尝试获取和使用数据时,与sql相比,这感觉很尴尬。例如,如果我返回数据,它希望它以Future的形式出现,但是一旦我以该格式返回数据,则我将无法再像以前一样访问ID。
Future<List<DocumentSnapshot>> getSeedID() async{
var data = await Firestore.instance.collection('users').document(widget.userId).collection('products').getDocuments();
var productList = data.documents;
print("Data length: ${productList.length}");
for(int i = 0; i < productList.length; i++){
var productId = Firestore.instance.collection('products').document(productList[i]['productId']).documentID;
if(productId != null) {
print("Data: " + productId);
}
}
return productList;
}
问题答案:
简短的回答,我没有注意您如何使用未来
从用户表获取productId
Future<List<DocumentSnapshot>> getProduceID() async{
var data = await Firestore.instance.collection('users').document(widget.userId).collection('Products').getDocuments();
var productId = data.documents;
return productId;
}
然后使用.then()调用此方法,而不是尝试将返回的数据应用于变量,因为这不是将来的工作方式
var products;
getProduceID().then((data){
for(int i = 0; i < s.length; i++) {
products = Firestore.instance.collection('products')
.document(data[i]['productID'])
.snapshots();
if (products != null) {
products.forEach((product) {
print(product.data.values);
});
}
}
});