我有以下数据结构:
name
可以有无限数量的孩子。
和下面的代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dirFire = rootRef.child("messages").child("name");
dirFire.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.getValue(String.class);
//do what you want with the name
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
使用上面的代码,我无法检索name
. name
如果key
客户端未知,我如何检索?
请使用此代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messagesRef = rootRef.child("messages");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
DatabaseReference keyRef = rootRef.child("messages").child(key).child("name");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds1 : dataSnapshot.getChildren()) {
String name = ds1.getValue(String.class);
Log.d("TAG", name);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
keyRef.addListenerForSingleValueEvent(valueEventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
messagesRef.addListenerForSingleValueEvent(eventListener);
编辑:这是另一种使用看起来像以前的解决方案的方法。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference messagesRef = rootRef.child("messages");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
for (DataSnapshot nameSnapshot : ds.child("name").getChildren()) {
String name = nameSnapshot.getValue(String.class);
Log.d("TAG", name);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
messagesRef.addListenerForSingleValueEvent(eventListener);
输出将是:
John Miche
Joe Mitch
Sabr. A
Luis Jean
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句