JWR*_*ich 8 firebase flutter google-cloud-firestore
我正在玩颤振,但我遇到了一个我无法弄清楚的 firestore 问题。
假设我想检索客户的购买者历史记录,并且我有一个如下所述的 Firestore,所以我有一个“用户”集合,其中包含一个user_id's文档,然后在其中,我有一个“产品”集合与包含的文档product_id“我的目的是收集产品的ID为选定的用户,然后检索从产品集合产品价格?
用户
产品
我遇到的问题是,虽然我可以从用户表中获取产品的 id,但我看不到如何使用这些数据的简单方法,就像使用 SQL 一样,我们将对 product_id 进行简单的连接获取 id 匹配的价格?
任何帮助将非常感激。
感谢您回复 Frank van Puffelen 2 单独查询接缝合理,但它带来了第二个查询的其他问题,就像现在使用下面的代码一样,我可以从用户那里获取文档 ID,然后对产品进行查询,一切看起来都不错,所以我认为我正朝着正确的方向前进,因为我可以在循环中打印文档的 id 以确保我正在访问正确的文档,但是当我更改它以获取文档的快照时,我无法访问其中的数据,这可能是我在做的一些愚蠢或误解的东西,但是在尝试获取和处理数据时,与 sql 相比,这感觉非常尴尬。例如,如果我返回它希望它采用未来形式的数据> 但是,一旦我以该格式返回数据,那么我就无法再以与之前相同的方式访问 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;
}
Run Code Online (Sandbox Code Playgroud)
简短的回答我没有注意你如何使用未来
从用户表中获取 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;
}
Run Code Online (Sandbox Code Playgroud)
然后使用 .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);
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11035 次 |
| 最近记录: |