需要从 Firestore 中查询多个集合

问题描述 投票:0回答:2

我实在找不到怎么做,如何在我的Recycler中查看某个部门的所有值。 首先,这可能吗? 这就是我的 Firestore 数据库的外观,“blue_bottle”和“tops_national”是文档的一部分:

enter image description here

我想用同一部门的“blue_bottle”和“tops_national”中的所有产品填充我的 RecyclerView。 所以我需要一个我认为正确的文档参考:

private val promoOnedb = FirebaseFirestore.getInstance()
private val promoOneRef: DocumentReference = promoOnedb.collection("tops")
    .document("promotions")

但是我现在如何查询 DocumentReference 以显示两个集合中的所有产品以显示同一部门的所有产品?请。

android firebase kotlin google-cloud-firestore android-recyclerview
2个回答
4
投票

Firestore 中跨多个集合读取的唯一方法是使用集合组查询,它从具有特定名称的所有集合中读取。

o 使用单个集合组查询,您可以从所有

blue_bottle
集合或所有
tops_national
集合中读取。但是,Firestore 中没有功能可以通过单个操作读取所有
blue_bottle
集合 所有
tops_national
集合。您将需要至少两个(集合组)查询,从而合并应用程序代码中的结果。

如果您想通过一次操作读取所有产品,则需要将它们存储在同名的集合中,例如

products
。只有这样你才能使用单个集合组查询一次性读取它们。


0
投票
**Easy method to fecth 2 collections Data** 

Future<void> fetchDataFromMultipleCollections() async {
  final firestore = FirebaseFirestore.instance;

  // Define the collections you want to fetch data from
  final Collection1 = firestore.collection('collection');
  final Collection2 = firestore.collection('collection2');

  try {
    // Create queries for each collection
    final collection1Query = Collection1.get();
    final collection2Query = Collection2.get();

    // Execute the queries simultaneously
    final [collection1Snapshot, collection2Snapshot] = await Future.wait([
      collection1Query,
      collection2Query,
    ]);

    // Get the data from the queries
    final collection1Data = collection1Snapshot.docs.map((doc) => doc.data()).toList();
    final collection2Data = collection2Snapshot.docs.map((doc) => doc.data()).toList();

    // Do something with the fetched data
    print('Colelction1 Details: $collection1Data');
    print('Collection2 Details: $collection2Data');
  } catch (e) {
    print('Error fetching data: $e');
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.