我在此设置中使用了实时数据库:
->users
->uid
->name
->email
->other info
如果要保存用户数据,可以使用User类,然后按如下所示在数据库中设置对象:
final FirebaseUser user = await FirebaseAuth.instance.currentUser();
FirebaseDatabase.instance.reference().child("kullanıcılar").child(user.uid).child("takip").set({"uid":"uid"});
我尝试过了,效果很好。
但是如何从数据库中检索这些值?例如,一旦我设置了上面所示的User对象,我可能想要检索用户的电子邮件。我并不是说要通过登录提供商获取电子邮件。我希望通过实时数据库发送电子邮件。我已经尝试了一段时间,但是文档并没有太大帮助。它显示的全部内容是设置侦听器,以等待数据更改。但是我不等待变化,我不想要听众。我想通过使用JSON树中的键直接获取数据库中的值。是否可以通过实时数据库进行?如果是这样,该怎么办,因为文档没有解释它,或者我只是不理解它。谢谢。
答案 0 :(得分:0)
您可以使用.once()
一次检索值。这是一个示例:https://github.com/flutter/plugins/blob/master/packages/firebase_database/example/lib/main.dart#L62
或更好,使用async / await:
Future<String> getEmail() async {
String result = (await FirebaseDatabase.instance.reference().child("path/to/user/record/email").once()).value;
print(result);
return result;
}
答案 1 :(得分:0)
您无法从firebase中检索单个值,它总是返回整个记录的DocumentSnapshot
。您可以使用以下用户ID从用户表中获得一条记录:
getData() async {
final FirebaseUser user = await _firebaseAuth.currentUser();
return await FirebaseDatabase.instance.reference().child('user').equalTo(user.uid);
}
像这样获得它:
getData().then((val){
print(val.email);
});