Firebase数据库数据检索-Java [英] Firebase database data retrieving -Java

查看:159
本文介绍了Firebase数据库数据检索-Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的数据库结构:



我用来读取数据的代码:

  user =hrcj7; 
mDatabase = FirebaseDatabase.getInstance()。getReference()。child(User);
查询phoneQuery = mDatabase.orderByChild(user);
phoneQuery.addChildEventListener(new ChildEventListener(){
@Override $ b $ 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){

}
$ b $ @覆盖
public void onChildRemoved(DataSnapshot dataSnapshot){


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

}


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

这是检索后的dataSnapsshot值:

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

这是模型类:

  public class User {


public String email;
public String imageurl;
public String username;
$ b public 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(){
//调用DataSnapshot.getValue(User.class)所需的默认构造函数
}

}

我的问题是 dinosaur.getEmail() get检索值后返回null。可能是什么问题?提前致谢。

解决方案

这里我找到了解决方案。 行:

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

应替换为以下内容:

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


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.

解决方案

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

这篇关于Firebase数据库数据检索-Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆