【发布时间】:2016-10-14 13:19:35
【问题描述】:
我在 Firebase 中有这样的数据库结构
我想根据键 number 搜索此结构的搜索并获取父键作为回报。这意味着如果我搜索 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。
请帮忙,提前谢谢
【问题讨论】:
-
您传入的
number变量是否定义为数字?还是字符串? -
@FrankvanPuffelen...数字被定义为字符串
-
你的问题为什么说“9758210790”?
-
这意味着您正在将代码中的数字与数据库中的字符串进行比较,该字符串不匹配。试试
final long number = 8860124421; -
@cricket_007..对不起我的错误,感谢您指出
标签: android firebase firebase-realtime-database