我在这个设置中使用了实时数据库:
->users
->uid
->name
->email
->other info
如果我想保存用户数据,我会使用我的User类,然后在数据库中设置对象,如下所示:
//assume variables have already been declared...
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseUser = mFirebaseAuth.getCurrentUser();
User user = new User(name, email, other values...);
mDBRef.child("users").child(mFirebaseUser.getUid()).setValue(user);
我尝试过它并且工作正常。
但是如何从数据库中检索这些值?例如,一旦我设置了如上所示的User对象,我可能想要检索用户的电子邮件。我并不是指通过登录提供商收到电子邮件。我希望通过实时数据库发送电子邮件。我已经尝试了一段时间了,但文档没有多大帮助。它显示的是设置监听器以等待数据的更改。但我不是在等待改变,我不想要听众。我想通过使用JSON树中的键直接获取数据库中的值。这可以通过实时数据库吗?如果是这样,怎么办呢,因为文档没有解释它或者我只是不理解它。如果不可能,我应该使用存储数据库还是其他什么?感谢。
答案 0 :(得分:5)
Firebase使用侦听器来获取数据。这只是它如何运作的本质。虽然,您可以使用单个事件监听器(相当于只抓取一次数据)。它将立即触发并获取数据,并且不会再次触发。以下是获取当前用户电子邮件的代码示例:
//Get User ID
final String userId = getUid();
//Single event listener
mDatabase.child("users").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user value
User user = dataSnapshot.getValue(User.class);
//user.email now has your email value
}
});