我正在尝试从我的Firestore数据库中检索所有不同用户发布的产品,我想从所有用户中检索所有帖子并将其显示在屏幕(例如供稿屏幕)上。
我用来获取此数据的代码是:
static Future<List<Product>> getProducts(String userId) async {
QuerySnapshot productSnapshot = await productsRef
.document(userId)
.collection('usersProducts')
.orderBy('timestamp', descending: true)
.getDocuments();
List<Product> products =
productSnapshot.documents.map((doc) => Product.fromDoc(doc)).toList();
return products;
}
我得到的是我在其中传递userId的原因,这就是为什么我仅从一个用户那里获得产品,但是我想要的是数据库中的所有产品,而与用户无关。如何才能做到这一点?
答案 0 :(得分:1)
您所描述的是所谓的集合组查询。此类查询基于集合名称而不是其路径进行,因此您可以使用以下命令查询所有usersProducts
集合:
Firestore.instance.collectionGroup('usersProducts').getDocuments()
要了解有关此类型查询的更多信息,请参见blog post that announced them及其documentation。
答案 1 :(得分:0)
我认为您想获取所有用户产品。因此,直接引用“产品”节点将检索所有数据,而不论用户是什么。
QuerySnapshot snapShot = await Firestore.instance.collection("products").getDocuments();
然后相应地管理snapShot。