我在这个设置中使用了实时数据库:

->users
    ->uid
        ->name
        ->email
        ->other info

如果我想保存用户数据,我将使用我的用户类,然后在数据库中设置对象,如下所示:
//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);

我试过了,效果很好。
但是如何从数据库中检索这些值呢?例如,一旦我设置了如上所示的用户对象,我可能想要检索用户的电子邮件。我不是说通过登录提供商收到邮件。我要通过实时数据库发送电子邮件。我已经尝试了一段时间,但文档并没有多大帮助。它所显示的只是设置侦听器,以便等待对数据的更改。但我不是在等待改变,我不想要一个倾听者。我想通过使用json树中的键直接获取数据库中的值。这可以通过实时数据库实现吗?如果是这样的话,怎么做呢,因为要么文档没有解释,要么我就是不理解。如果不可能,我应该使用存储数据库还是其他什么?谢谢。

最佳答案

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
        }
    });

10-07 12:49
查看更多