尝试从Firestore检索数据

时间:2019-12-11 02:34:54

标签: firebase flutter google-cloud-firestore

我正在尝试从我的Firestore数据库中检索所有不同用户发布的产品,我想从所有用户中检索所有帖子并将其显示在屏幕(例如供稿屏幕)上。

这是firestore数据的样子: firestore screenshot

我用来获取此数据的代码是:

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的原因,这就是为什么我仅从一个用户那里获得产品,但是我想要的是数据库中的所有产品,而与用户无关。如何才能做到这一点?

2 个答案:

答案 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。