【问题标题】:Flutter Firestore documentsnapshot to MapFlutter Firestore 文档快照到 Map
【发布时间】:2022-01-25 11:35:57
【问题描述】:

对于我的颤振应用,我正在获取一个集合作为查询快照并将其转换为一个列表,使用:

var dataList = snapShot.docs.map((e) => e.data()).toList();

像魅力一样工作,到目前为止没有问题。

最近,我一直在尝试操作集合中的数据,为此,我需要 docId。但由于某种原因,该列表没有包含 docId。

在将快照转换为列表时,应该有一种快速包含文档 ID 的方法。

有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    您可以将e.id 添加到您的地图中。

    var dataList = snapShot.docs.map((e) {
              Map value = e.data();
              value['docId'] = e.id;
              return value;
            }).toList();
    

    或者您可以创建模型类并将docId添加到下面的模型类中。

    您可以使用这种方式返回对象列表

            return ref.snapshots().map((list) => list.docs.map((doc) => 
        Model.fromFirestore(doc)).toList());
    

    你的模型类

        class Model {
          final String categoryId;
        
          Model({this.categoryId});
        
          factory Model.fromFirestore(DocumentSnapshot doc) {
            Map data = doc.data();
        
            return Model(
              docId: doc.id,
              categoryId: data['categoryId'],
            // other fields
            );
         }
        }
    

    【讨论】:

    • 太棒了!我使用了第一个解决方案,因为它最适合并且效果很好。
    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2019-03-22
    • 2021-09-27
    • 2019-09-03
    • 1970-01-01
    • 2020-06-20
    相关资源
    最近更新 更多