java - 从 Firebase 按 ID 检索 Java 对象

标签 java android firebase firebase-realtime-database

我正在编写一个 Android 应用程序,我正在尝试通过 ID 从其 Firebase 相关表中检索类 User.java 的对象。我想知道如何从 Java 端获取它,只要我尝试了 Firebase Official docs 中所述的示例即可。但它们都不适合我。

以这个SO问题为例,我想要一个接口(interface)如下的方法:

public User readUser(String userId);

换句话说,我要执行:

读取用户(-lnnROTBVv6FznK81k3n)

并检索关联的User对象

谢谢

-------------------------------------------- - - - - - - - - - 编辑 - - - - - - - - - - - - - - - - ------------------------------:

我设法用这段代码获得了值(value):

public void retrieveUser(final String email){
        firebaseUsersRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot messageSnapshot: dataSnapshot.getChildren()) {
                    if(messageSnapshot.getKey().equals(Email.encodeID(email))){

                        retrievedUser = messageSnapshot.getValue(User.class);
                        break;
                    }
                }
            }

            @Override
            public void onCancelled(FirebaseError firebaseError) { }
        });
    }

请不要检索用户是一个类属性,因此是一个字段。我正在从代码访问该字段,但即使我看到它在调试器上取值,它在调用代码上为 null

有什么提示吗?我不能只在方法本身中返回它吗?:

public User retrieveUser(final String email);

谢谢

最佳答案

所以这是灵魂,虽然我没有把它放在方法中。

final String uid = "your Uid here"; 
        // Get a reference to users
        Firebase ref = new Firebase(Constants.FIREBASE_URL_USERS);
        // Attach an listener to read our users
        ref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {

                for (DataSnapshot user: snapshot.getChildren()) {
               //this is all you need to get a specific user by Uid
                    if (user.getKey().equals(uid)){
                        wantedUser = user.getValue(User.class);
                    }
               //**********************************************

                }
                Log.i(TAG, "onDataChange: " + wantedUser.getName());
            }
            @Override
            public void onCancelled(FirebaseError firebaseError) {
                System.out.println("The read failed: " + firebaseError.getMessage());
            }
        });

关于java - 从 Firebase 按 ID 检索 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36897386/

相关文章:

java - MediaRecorder 启动在无效状态下调用 : 0

java - 如何更改 ExpandableListView 中子项中按钮的可见性?

使用 LDAP 的 Firebase 身份验证

java - 在添加之前检查 Firebase 数据库中是否存在 URL

java - 将轮类时间转换并打印为营业时间

java - Spring .Boot Mustache 如何在模型中导航 Java Map

java - JMS 在 Java 中如何工作?

Android如何改变gridview高亮颜色?

java - 在java中调用函数时出现NullPointerException

javascript - 设置范围后启动 svg 动画 - angularjs - svg