【问题标题】:get data from both collection and it is sub collection in firestore with flutter从两个集合中获取数据,它是 firestore 中的子集合,带有颤动
【发布时间】:2020-11-24 10:22:48
【问题描述】:

我在 Firestore 中有这个数据库结构: 这里面有什么 我如何在颤振中进行查询以获取 Places 子集合中的所有数据以及来自 User 集合的名称,此代码用于从每个 User 集合中获取所有位置子集合数据:

Future<List<PlaceModel>> getPlaces() async {
    List<PlaceModel> placesList = [];
    // get all docs from user collection
    var users = await udb.get();
    for( var uid in users.docs) {
      var userData = await udb.doc(uid.id).get();
      var userPlaces = await udb.doc(uid.id).collection(placeTable).get();
      userPlaces.docs.forEach((place) {
            placesList.add(PlaceModel.fromMap(place.data()));
          });
    }
    return placesList;
  }

【问题讨论】:

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


    【解决方案1】:

    您也可以使用where()orderby() 方法来获取带有一些规则的数据。

    Firestore.instance
            .collection("users")
            .document(uid.id)
            .collection(placeTable)
            .where('fieldName', isEqualTo:name )
            .snapshots()
    

    【讨论】:

      【解决方案2】:

      单个查询只能访问单个集合,或一组具有相同名称的集合。 Firestore 查询很浅,不会从子集合中读取数据。如果您需要子集合中的数据,则必须执行附加查询才能读取它。

      【讨论】:

      • 那么做我想做的最好的方法是什么?即使改变结构或任何方式?我只需要以任何方法做到这一点,我怎样才能进行额外的查询?我对此一无所知
      • 我不确定你的意思。要运行额外的查询,您只需像现在对父集合执行相同的操作 - 一次,或者为您返回的每个文档执行一次。
      • 嘿@OsamaMohammed。你有没有得到任何地方?如果不是,您能否说明在为子集合创建额外查询时遇到了什么问题?
      • 不,我什么都没做,因为我不知道如何创建额外的查询,我不知道我没有任何关于它的教程
      • 嵌套集合的查询没有什么不同。你卡在哪里了?
      猜你喜欢
      • 2019-02-26
      • 1970-01-01
      • 2021-08-02
      • 2019-06-05
      • 1970-01-01
      • 2020-11-26
      • 2021-10-31
      • 2018-07-01
      • 2022-11-06
      相关资源
      最近更新 更多