我在Firebase中有这样的数据库结构
我想根据键数字搜索此结构,然后获取父键。这意味着如果我搜索 8860124421 ,那么我应该得到 -KTEtSR7chN8te1WaW-W 作为回报。
我在android中这样做 -
final String number = "8860124421";
DatabaseReference global_user_entry_ref = ApplicationContext.getGlobalDataBaseReference()
.child("User-Entry-2").getRef(); //Reference to User-Entry-2
Query query = global_user_entry_ref.orderByChild("number").equalTo(number);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot != null){
for(DataSnapshot friend: dataSnapshot.getChildren()){
String firebase_id = (String) friend.getKey();
Log.d("ContactSync","handle number "+firebase_id+" "+number+" "+friend);
}
Log.d("ContactSync","handle number outer "+dataSnapshot);
//user exist
}
else {
//user_does_not_exist
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("ContactSync","handle number oncancel "+databaseError.getMessage());
}
});
但是我没有得到正确的结果, onDataChange 中的 dataSanpshot 看起来像这样 -
DataSnapshot {key = User-Entry-2,value = null}
但我希望使用数字键的父级获取dataSnapShot。
请帮助,提前致谢
答案 0 :(得分:1)
正如@Frank van Puffelen在评论中所述,问题在于我将数字与代码中的数字与数据库中的字符串进行比较,这是不匹配的,因此解决方案是改变
final String number = "8860124421";
到
final long number = 8860124421;