首页 > 解决方案 > 如何在firebase中读取单个文件

问题描述

所以我想阅读我的用户的角色,我知道如何阅读集合和文档,但是如何从文档中读取一个字段?

这是我一直在尝试的,

    @override
  void readRole(){
    final path = APIPath.role(uid);
    final reference = FirebaseFirestore.instance.collection(path);
    final snapshots = reference.snapshots();
    snapshots.listen((snapshot) { snapshot.docs.forEach((snapshot) => print(snapshot.data()));
    });
  }
static String role (String uid) => 'users/$uid';

标签: firebaseflutter

解决方案


Firestore doc.data() 的类型为 Map<String, dynamic> ,表示 Json。所以你可以尝试这样的事情:

final Map<String, dynamic> data = snapshot.data();
final String role = data['role'];

但最好的方法是创建一个用户实体并使用 Json_serializable:https ://pub.dev/packages/json_serializable 并将 firestore 数据对象转换为您的用户实体;

但是通过检查你的 role() 函数,我不确定是否正确理解它,用户的角色只是字符串 'users/$uid' ?


推荐阅读