获取,而不是布尔值
问题描述:
我有一个火力点数据库,看起来像这样空:获取,而不是布尔值
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 protected], ifQuestUser=true, organization=Primus}}
在调用datasnapshot.child('ifQuestUser');
它赋予价值
IF QUEST: DataSnapshot { key = ifQuestUser, value = null }
它的值显示为null
而不是true
,我不明白为什么。
答
要获得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
,并且具有ifQuestUser
为Boolean
类型。
答
首先检查您声明键的命名约定。其次,不要在你的Model类中使用你的密钥。使用类似user.isQuestUser()
而不是user.isIfQuestUser()
,因为在这种情况下,Firebase返回null
。我也遇到了同样的错误。