小编JWR*_*ich的帖子

在firestore中颤动查询多个集合

我正在玩颤振,但我遇到了一个我无法弄清楚的 firestore 问题。

假设我想检索客户的购买者历史记录,并且我有一个如下所述的 Firestore,所以我有一个“用户”集合,其中包含一个user_id's文档,然后在其中,我有一个“产品”集合与包含的文档product_id“我的目的是收集产品的ID为选定的用户,然后检索从产品集合产品价格?

  • 用户

    • user_id_1
      • 产品
        • 购买 ID
          • 产品编号
          • 数量
  • 产品

    • 产品编号
      • product_desc
      • 价钱

我遇到的问题是,虽然我可以从用户表中获取产品的 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 …
Run Code Online (Sandbox Code Playgroud)

firebase flutter google-cloud-firestore

8
推荐指数
1
解决办法
1万
查看次数

无需重新构建父级子控件的Flutter setState

我有一个包含a listView和a 的父对象,floatingActionButton我想floatingActionButton在用户开始滚动时隐藏,我设法在父窗口小部件中做到这一点,但这需要每次重新构建列表。

我已经将其floatingActionButton移至单独的类,因此我可以更新状态并仅重建该小部件,因为我遇到的问题是将数据从ScrollController父类中的数据传递给孩子,这在通过导航进行操作时很简单,但是接缝却更多笨拙而不重建父母!

android dart flutter

1
推荐指数
4
解决办法
6226
查看次数