我想从firebase realtime数据库中获取一个特定用户的值,但是当我尝试这样做时,值总是空的。但是当我打印整个对象时,它工作得很好。
void getType(String email) {
final ref = FirebaseDatabase.instance.ref();
ref
.child('users')
.orderByChild('Email')
.equalTo(email)
.once()
.then((DatabaseEvent snap) {
if (snap.snapshot.value != null) {
Map<dynamic, dynamic>? data =
snap.snapshot.value as Map<dynamic, dynamic>?;
String? userType = data?["userType"] as String?;
print('User type: $userType');
print('Data : ${snap.snapshot.value}');
} else {
print('No data found for email: $email');
}
});
}
下面是print('Data : ${snap.snapshot.value}');
的输出:
数据:{-NTVZFFxx1fi4Aj4X_nZ:{电子邮件:yy@tt.com,电话号码:4,ID:66768,userType:办公室,名称:ss}}。
您可以看到它工作正常,另一方面,“print('User type:');“是:(用户类型:null)
1条答案
按热度按时间xggvc2p61#
当您对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也将包含一个结果的列表。
你的代码没有考虑这个列表。要做到这一点,你应该循环遍历
snapshot
中的结果: