Firebase database data retrieving -Java

老子叫甜甜 提交于 2020-01-06 16:21:37

问题


Here is my DB structure:

Code which I used for data reading:

user="hrcj7";
mDatabase = FirebaseDatabase.getInstance().getReference().child("User");
                                        Query phoneQuery = mDatabase.orderByChild(user);
                                        phoneQuery.addChildEventListener(new ChildEventListener() {
                                            @Override
                                            public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
                                                User dinosaur = dataSnapshot.getValue(User.class);
                                                System.out.println(dataSnapshot.getKey() + " was " + dinosaur.getEmail() + " meters tall.");
                                            }

                                            @Override
                                            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

                                            }

                                            @Override
                                            public void onChildRemoved(DataSnapshot dataSnapshot) {

                                            }

                                            @Override
                                            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                                            }


                                            @Override
                                            public void onCancelled(DatabaseError databaseError) {
                                                Log.e("App", "onCancelled", databaseError.toException());
                                            }
                                        });

This is the dataSnapsshot value after retrieving:

DataSnapshot {
    key = hrcj7,
    value = {
        -Kh2-jOeGXCOr-VE3uD5={
            username=hrcj7,
            email=rperera723@gmail.com,
            imageurl=https://firebasestorage.googleapis.com/v0/b/freelancer-33195.appspot.com/o/Blog_Images%2Fcropped933315999.jpg?alt=media&token=7890f05f-87db-4a9d-9534-02da00225470
        }
    }
}

This is the model class:

public class User {


            public String email;
            public String imageurl;
            public String username;

            public User(String email,String imageurl,String username) {

                this.email = email;
                this.imageurl=imageurl;
                this.username=username;
            }

            public String getEmail() {
                return email;
            }

            public void setEmail(String email) {
                this.email = email;
            }

            public String getImageurl() {
                return imageurl;
            }

            public void setImageurl(String imageurl) {
                this.imageurl = imageurl;
            }

            public String getUsername() {
                return username;
            }

            public void setUsername(String username) {
                this.username = username;
            }
     public User() {
            // Default constructor required for calls to DataSnapshot.getValue(User.class)
        }

        }

My problem is that dinosaur.getEmail() get null after retrieving the value. What can be the issue? Thanks in advance.


回答1:


Here I found the solution .

In line:

User dinosaur = dataSnapshot.getValue(User.class);

should be replaced as following:

String key = mDatabase.child("User").child(user).push().getKey();
User dinosaur = dataSnapshot.child(key).getValue(User.class);


来源:https://stackoverflow.com/questions/43268811/firebase-database-data-retrieving-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!