Firebase检索/读取返回空值 - Android [英] Firebase retrieve/read returns null values - Android

查看:129
本文介绍了Firebase检索/读取返回空值 - Android的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Firebase文档检索数据:

$ ref $ add $ value $
public void onDataChange(DataSnapshot snapshot){
System.out.println(snapshot.getValue());
}
@Override
public void onCancelled(FirebaseError firebaseError ){
System.out.println(The read failed:+ firebaseError.getMessage());
}
});

运行上面的程序:


{users = {facebook:############### = {posts = { - KE8qg1VyPAwYj0uJDcn = {status = update1}},provider = facebook,displayName = Some Name创建用于表示用户的类:

 

@JsonIgnoreProperties(ignoreUnknown = true)//忽略映射问题
public class Users {

字符串状态;
String displayName;
字符串提供程序;
$ b public Users(){
//空的默认构造函数
}

public String getStatus(){
return status;
}

public String getName(){
return displayName;
}

public String getProvider(){
return provider;




$ b $ p $使用以下命令来尝试检索值: (b)

$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ b @Override
public void onChildAdded(DataSnapshot snapshot,String previousChildKey){
Users newUser = snapshot.getValue(Users.class);
System.out.println(Status:+ newUser .getStatus());
System.out.println(Display Name:+ newUser.getName());
System.out.println(Provider:+ newUser.getProvider()) ;
}

所有内容都返回null循环遍历数据库,但那些失败,所以我决定回到第一个版本。不确定哪种方式是最好的这种情况?

解决方案

数据被返回现在,实现最后会有太多的嵌套,所以现在帖子在一个单独的节点。更改后的代码:

 最终Firebase userRef = rootRef.child(users /+ rootRef.getAuth()。getUid() ); 

到:

  final Firebase userRef = rootRef.child(posts); 


Using Firebase docs for retrieving data with:

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        System.out.println(snapshot.getValue());
    }
    @Override
    public void onCancelled(FirebaseError firebaseError) {
        System.out.println("The read failed: " + firebaseError.getMessage());
    }
}); 

Running the above produced:

{users={facebook:###############={posts={-KE8qg1VyPAwYj0uJDcn={status=update1}}, provider=facebook, displayName=Some Name}}}

Created class to represent users:

@JsonIgnoreProperties(ignoreUnknown=true) //to ignore mapping issues
public class Users {

String status;
String displayName;
String provider;

public Users() {
        // empty default constructor
}

public String getStatus() {
    return status;
}

public String getName(){
    return displayName;
}

public String getProvider(){
    return provider;
}
}

Using the following to attempt to retrieve values:

ref.addChildEventListener(new ChildEventListener() {
        // Retrieve new posts as they are added to the database
        @Override
        public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
            Users newUser = snapshot.getValue(Users.class);
            System.out.println("Status: " + newUser.getStatus());
            System.out.println("Display Name: " + newUser.getName());
            System.out.println("Provider: " + newUser.getProvider());
        }

Everything returns a null? Read over & tried several examples of using for loops to iterate over the database but those failed as well so I decided to come back to the first version. Not certain which way is best for this situation?

解决方案

Data is returned now. Realized in the end there would be too much nesting so now posts are in a separate node. Changed code from:

final Firebase userRef = rootRef.child("users/" + rootRef.getAuth().getUid());

to:

final Firebase userRef = rootRef.child("posts");

这篇关于Firebase检索/读取返回空值 - Android的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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