Android 如果Firebase中存在值,则获取节点数据
我想在Firebase中存在特定值时检索节点 例如:如果我指定的Contact=123存在于任何节点中,则检索该节点的完整数据,即someId1 我的Firebase结构Android 如果Firebase中存在值,则获取节点数据,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想在Firebase中存在特定值时检索节点 例如:如果我指定的Contact=123存在于任何节点中,则检索该节点的完整数据,即someId1 我的Firebase结构 -Users -someId1 -Contact: 123 -fname: something -lname: something -someId2 -Contact: 456 -fname: something
-Users
-someId1
-Contact: 123
-fname: something
-lname: something
-someId2
-Contact: 456
-fname: something
-lname: something
如果Contact=123在节点内匹配,如何获取someId1?使用android代码帮助解决问题。要获取与第一项对应的数据,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference productsRef = rootRef.child("Users");
Query query = productsRef.orderByChild("Contact").equalTo("123");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String fname = ds.child("fname").getValue(String.class);
String lname = ds.child("lname").getValue(String.class);
Log.d("TAG", name + "/" + lname);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
query.addListenerForSingleValueEvent(valueEventListener);
根据您的模式,logcat中的输出将是:
something/something
很好的解决方案。当我想要逐个比较多个联系人时,我需要更改什么?Ex-检查ArrayList中的100个联系人。我应该在循环中写查询吗?明白了。。非常感谢你