查询Firestore快照中的特定字段

时间:2020-06-12 02:34:24

标签: firebase flutter google-cloud-firestore

我创建了此流,该流获取特定文档的快照。在文档内部有一个名为tripAttractions的数组,我想将其构建到列表中。问题是,如何从快照访问此特定阵列?

Stream<QuerySnapshot> getAttractions(BuildContext context) async* {
   Firestore.instance
      .collection('trips')
      .document(documentId)
      .snapshots(includeMetadataChanges: true);

}

该列表显示了我如何尝试访问快照tripAttractions数据,但这不起作用。

ListView.builder(
   itemCount: snapshot.data['tripAttractions'].length,
                    itemBuilder: (BuildContext context, int index) =>
                        tripAttractionsCards(
                            context, index, snapshot.data['tripAttractions']),
                  );

firestore文档中的数组 flutter

2 个答案:

答案 0 :(得分:1)

很可能您只是在项目生成器中缺少数组访问器:

ListView.builder(
   itemCount: snapshot.data['tripAttractions'].length,
        itemBuilder: (BuildContext context, int index) =>
            tripAttractionsCards(
                context, index, snapshot.data['tripAttractions'][index]),
      );

答案 1 :(得分:0)

好的,问题在于错误地调用了 QuerySnapshot 。我应该使用 DocumentSnapshot ,因为我直接调用文档。另外,我还必须添加 yield * 以从Firestore返回数据。

Stream<DocumentSnapshot> getAttractions(BuildContext context) async* {
   yield* Firestore.instance
      .collection('trips')
      .document(documentId)
      .snapshots(includeMetadataChanges: true);
}

我能够通过在streamBuilder中添加if语句来检查快照是否正在发送任何数据来解决此问题。

   if (!snapshot.hasData) return Text("Loading");