在Firebase Android中使用orderByChild equalsTo获取子项
这是我在Firebase上的数据-在Firebase Android中使用orderByChild equalsTo获取子项,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,这是我在Firebase上的数据- app-<br /> -Users<br /> +366MWex62IhUaOwbkjjGedIgLQJ3<br /> -sfsfaegaergg<br /> firstname: "John"<br /> lastname: "Doe"<br /> phone: "+1123456789"<br /> app- -用户 +366MWex62
app-<br />
-Users<br />
+366MWex62IhUaOwbkjjGedIgLQJ3<br />
-sfsfaegaergg<br />
firstname: "John"<br />
lastname: "Doe"<br />
phone: "+1123456789"<br />
app-
-用户
+366MWex62IhUaOwbkjjGedIgLQJ3
-SFAEGAERGG
名字:“约翰”
姓氏:“Doe”
电话:“+1123456789”
目前我的数据库中有两个用户。我的输入是phone=“+1123456789”(第二用户)
这是我的代码-DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); DatabaseReference rf = rootRef.child("Users"); com.google.firebase.database.Query query = rf.orderByChild("phone").equalTo("+1123456789"); query.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot snap: dataSnapshot.getChildren()) { Log.v("children", snap.getChildren().toString()); } } @Override public void onCancelled(DatabaseError databaseError) { } }); DatabaseReference rootRef=FirebaseDatabase.getInstance().getReference(); DatabaseReference rf=rootRef.child(“用户”); com.google.firebase.database.Query Query=rf.orderByChild(“电话”).equalTo(“+1123456789”); addValueEventListener(新的ValueEventListener(){ @凌驾 公共void onDataChange(DataSnapshot DataSnapshot){ 对于(DataSnapshot快照:DataSnapshot.getChildren()){ Log.v(“children”,snap.getChildren().toString()); } } @凌驾 已取消的公共void(DatabaseError DatabaseError){ } });
我没有得到第二个用户的详细信息。调试器一直运行到addValueListener,然后直接退出。我需要在哪里更正?谢谢。“调试器一直运行到addValueListener,然后直接退出”-结果将异步返回。是否在onDataChange中设置了断点约翰·奥雷利
mFirebaseRef = mFirebaseInstance.getReference();
DatabaseReference queryLocation =
mFirebaseRef.child("BloodGroupDetail");
Query query = queryLocation.orderByChild("bloodgroup").equalTo("B+");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
getUpdate(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
谢谢。试试这个:
mFirebaseRef = mFirebaseInstance.getReference();
DatabaseReference queryLocation =
mFirebaseRef.child("BloodGroupDetail");
Query query = queryLocation.orderByChild("bloodgroup").equalTo("B+");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
getUpdate(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
“调试器一直运行到addValueListener,然后直接退出”-结果将异步返回。您是否在数据更改中设置了断点?是。过了一会儿就回来了。这很正常,对吧?@Kedar是的,就是这样。你的问题解决了吗?它解决了问题,但我不明白为什么突然读取数据要花这么长时间。我必须等待一分钟,firebase才能获取数据:/谢谢你的时间。约翰·奥雷利回答了这个问题