颤振:从 firebase 获取文档

时间:2021-03-18 07:59:26

标签: firebase flutter google-cloud-firestore

我想带出模型集合的文档 ID '1004'。我该怎么做? 我只知道集合和文档 ID '1004'。

错误代码:

DocumentSnapshot _model =  await carCollectionRef
          .doc()
          .collection(USER_CAR_COLLECTION)
          .doc()
          .collection(MODEL_COLLECTION)
          .doc('1004')
          .get();

enter image description here

2 个答案:

答案 0 :(得分:0)

不是从 Firestore 获取数据的理想方式。但这就是您获得它的方式。

  foo() async {
   Map<String, dynamic> myData;

     await carCollectionRef
      .get()
      .then((snapshot) => snapshot.docs.forEach((element) {
          if (element.exists) {
            carCollectionRef
                .doc(element.id)
                .collection('USER_CAR_COLLECTION')
                .get()
                .then((snapshot2) => snapshot2.docs.forEach((element2) {
                      if (element2.exists) {
                        carCollectionRef
                            .doc(element.id)
                            .collection('USER_CAR_COLLECTION')
                            .doc(element2.id)
                            .collection('MODEL_COLLECTION')
                            .doc('1004')
                            .get()
                            .then((value) => {
                                  if (value.exists) {myData = value.data()}
                                });
                      }
                    }));
          }
        }));

     print(myData);
  }

答案 1 :(得分:0)

我不是 100% 确定理解您的问题,但您似乎需要在 model 集合上使用 Collection Group query

为此,您需要将每个模型文档的 ID 保存在该文档的一个字段中,以便按照以下几行编写查询:

Firestore.instance.collectionGroup('moodels').where('docId', isEqualTo: '1004').get()
    .then((QuerySnapshot querySnapshot) => {...});

请注意,对于 ALL CarsUserCars,您将获得 ID == 1004 的模型文档。但是在不知道整个文档路径的情况下,没有其他方法可以仅通过其 ID 在子集合中查找文档。