我的数据库非常简单
TokenAdmin:
---xccsaccxvkkgmcdds :
---token: "cxcxzcfsdfdsfdsfs"
---uid: "xccsaccxvkkgmcdds"
---hjhbnghtfgdgdgdffg :
---token: "vhghtytyryyr"
---uid: "hjhbnghtfgdgdgdffg"
现在在我的代码中,我想检查并执行一些代码,只要它发现uid等于" hjhbnghtfgdgdgdffg" 这是我的代码:
mDatabase.child("TokenAdmin").orderByChild("uid").equalTo(mycurrUser.getUID()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//say here toast "A"
} else {
//toast "B"
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// ...
}
});
现在我运行代码,mycurrUser.getUID()值设置为" xxx"我没有在数据库中列出。我期望代码输出是吐司B,但我总是得到吐司A,在我的理解中,它已经在db中找到了值。如何解决这个问题,我哪里做错了?
答案 0 :(得分:2)
您需要使用以下内容:
mDatabase.child("TokenAdmin").orderByChild("uid").equalTo(mycurrUser.getUID()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
//Toast A
} else {
//Toast B
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
希望它有所帮助。
答案 1 :(得分:1)
我很困惑您为什么要使用查询来加载用户。您似乎已将令牌存储在UID键下,因此可以使用:
mDatabase.child("TokenAdmin").child(mycurrUser.getUID()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
... user exists
} else {
... user node does not exist
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});