获取null而不是布尔值

时间:2017-07-14 06:19:03

标签: android firebase firebase-realtime-database

我有一个firebase数据库,如下所示:

enter image description here

Query userQ = db.child("users").orderByChild("email").equalTo(email);
    userQ.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d("DATASNAPSHOT", dataSnapshot.getValue()+"");
            Log.d("IF QUEST",dataSnapshot.child("ifQuestUser")+" "+dataSnapshot.getChildren());
            for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){
                Log.d(dataSnapshot1.getKey(), dataSnapshot1.getValue()+"");
            }
            User user = new User(
                    dataSnapshot.child("email").getValue(String.class),
                    dataSnapshot.child("name").getValue(String.class),
                    dataSnapshot.child("lastName").getValue(String.class),
                    dataSnapshot.child("organization").getValue(String.class),
                    false
                    );
            dataSnapshot.getValue(User.class);
            Log.d("USER", user+"");
            if(user != null) {
                Log.d("IS QUEST USer", user.getName()+"  "+user.isIfQuestUser()+"");
                if(user.isIfQuestUser()) {
                    checkForQuestForumUser();
                } else {
                    checkForNonQuestForumUser();
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

返回:

DATASNAPSHOT: {user15={name=Pranjal, lastName=Srivastava, email=pranjal.pranz@gmail.com, ifQuestUser=true, organization=Primus}}

在调用datasnapshot.child('ifQuestUser');时,它会给出值

IF QUEST: DataSnapshot { key = ifQuestUser, value = null }

其值显示null而不是true,我无法理解原因。

2 个答案:

答案 0 :(得分:1)

获取ifQuestUser

Query userQ = db.child("users").orderByChild("email").equalTo(email);
userQ.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot dataSnapshot1: dataSnapshot.getChildren()){
            Users user = dataSnapshot1.getValue(Users.Class);
            if(user.isIfQuestUser())
            {
            // ...
            }

        }

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

我猜你有一个模型类Users,其中包含firebase db中的所有字段,类型为ifQuestUserBoolean

答案 1 :(得分:0)

首先检查声明键的命名约定。

其次,不要在您的Model类中使用您的密钥。使用类似user.isQuestUser()而不是user.isIfQuestUser()的内容,因为在这种情况下firebase会返回null。我也遇到了同样的错误。