从firebase数据库flutter中的uid获取用户数据

Posted

技术标签:

【中文标题】从firebase数据库flutter中的uid获取用户数据【英文标题】:get user data from uid in firebase database flutter 【发布时间】:2021-02-09 11:30:09 【问题描述】:

你能帮帮我吗?我刚刚学习 Flutter 几个月,我想从 Firebase 获取用户数据并显示用户配置文件。但它不起作用,这是我的代码:

DatabaseReference _ref;

  var email, nama, noTelp;

  @override
  void initState() 
    // TODO: implement initState
    super.initState();



    final User usernya = _auth.currentUser;
    final String uid = usernya.uid;

    _ref = FirebaseDatabase.instance.reference().child('user').child(uid);

    email = _ref.child('email');
    nama = _ref.child('nama');
    noTelp = _ref.child('noTelp');
  

以及用户配置文件的代码:

Column(
                            crossAxisAlignment: CrossAxisAlignment.start,
                            children: [
                              _ref == null
                                  ? Text(
                                      'Nama Pengguna',
                                      style: TextStyle(
                                          fontSize: 18,
                                          fontWeight: FontWeight.bold,
                                          color: Colors.white),
                                    )
                                  : Text(
                                      nama.toString(),
                                      style: TextStyle(
                                          fontSize: 18,
                                          fontWeight: FontWeight.bold,
                                          color: Colors.white),
                                    ),
                              Text(
                                email.toString(),
                                style: (TextStyle(color: Colors.white)),
                              ),
                              Text(noTelp.toString(),
                                  style: (TextStyle(color: Colors.white)))
                            ],
                          )

我得到这样的输出 'Database Reference' 的实例

这是我在 firebase 中的用户数据:

我得到这样的输出:

【问题讨论】:

【参考方案1】:

您应该调用 Firestore 方法 get() 来获取数据,然后从回调中读取返回的文档。

FirebaseDatabase.instance.reference().child('user').child(uid).get().then((docSnapshot) 
    print(docSnapshot.data()["email"]); // print data to test
  );

请查找参考资料here

【讨论】:

问题是询问实时数据库,而不是 Firestore。没有可用的 get()。【参考方案2】:

应该是这样的(使用云 Firestore):

  // collection reference
  final CollectionReference _userCollection =
      Firestore.instance.collection('users');
  
  Future getUser(String uid) async 
    return await _userCollection.document(uid).snapshots().map((doc) 
      _userDataFromSnapshot(doc);
    );
  
  
  // userData from snapshot
  UserData _userDataFromSnapshot(DocumentSnapshot snapshot) 
    return UserData(
      uid: uid,
      nickname: snapshot.data['nickname'],
    );
  

【讨论】:

问题是关于实时数据库,而不是 Firestore。

以上是关于从firebase数据库flutter中的uid获取用户数据的主要内容,如果未能解决你的问题,请参考以下文章

使用用户 ID 从 Firebase 获取数据

从登录用户 Flutter/Firebase 获取文档列表

Firestore上的空uid尝试使用flutter和firebase保存数据

如何从 Flutter 应用程序中删除 firebase 用户? [复制]

如何每次从 Firebase 数据库中获取随机 UId?

谁能告诉我如何使用flutter firebase电话身份验证获取uid/token?