从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获取用户数据的主要内容,如果未能解决你的问题,请参考以下文章
Firestore上的空uid尝试使用flutter和firebase保存数据