【问题标题】:combine two different collections of firebase in flutter在颤动中结合两个不同的firebase集合
【发布时间】:2021-04-14 21:20:52
【问题描述】:

我在 Flutter 应用程序中的 Firestore 中有两个不同的集合。我想将它们组合在一个查询中。如何将它们组合为一个查询或流?

我是 Firestore 的新手,正在学习这方面的知识。

Query query1 = Firestore.instance.collection("products1");

Query query2 = Firestore.instance.collection("products2");

Query MasterQuery;

    StreamBuilder(
        stream: MasterQuery.snapshots(),
        builder: (context, snapshot) {},
                );builder: (context, snapshot) {
      return !snapshot.hasData
          ? Text('PLease Wait')
          : ListView.builder(
              itemCount: snapshot.data.documents.length,
              itemBuilder: (context, index) {
                DocumentSnapshot products =
                    snapshot.data.documents[index];
                return ProductItem(
                  name: products['name'],
                  imageUrl: products['imageURL'],
                  price: products['price'],
                  discription: products['description'],
                );
              },
            );
    },

我该怎么做?

【问题讨论】:

标签: android firebase flutter dart google-cloud-firestore


【解决方案1】:

很遗憾,无法将来自不同集合的两个 Firestore 查询合并为一个查询。如果要将数据保存在两个不同的集合中,则必须有两个单独的查询。您可以将这两个查询与here 解释的指令结合起来。

另一种选择是更改数据库结构并将两个集合存储到一个集合中。如果您想将它们作为相同的流进行查询,我假设的数据模型非常相似。也许你可以有一个productType 字段来存储产品类型并创建一个in 查询,如下所示:

FirebaseFirestore.instance
    .collection('products')
    .where('productType', whereIn: <String>['product1', 'product2']);

【讨论】:

  • 嗨,如果它来自同一个集合呢?我有一个问题,我的列表中有超过 10 个元素要在 whereIn 中查询。我可以查询多个 whereIn 查询然后将它们组合起来吗?
  • @Mayb3Not 您当然可以将多个流合并为一个,或者可能有更好的解决方案。您对堆栈溢出有疑问吗?如果没有,如果您可以创建一个并在此处复制链接,我可以看看。
  • 我将多个 wherIn 查询的结果组合成一个列表,然后将它们全部添加到一个巨大的列表中。这是我对按时间顺序排序的社交媒体提要的解决方案
  • @Mayb3Not 使用 Firestore 创建社交媒体很困难。干得好!
猜你喜欢
  • 2021-12-10
  • 1970-01-01
  • 2021-07-16
  • 2013-12-12
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多