Java 如何从Firebase检索子数据?
我的数据库如下所示,在这里,我想检索Java 如何从Firebase检索子数据?,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我的数据库如下所示,在这里,我想检索mylocation子对象中的数据(请参见附图)。但它不起作用。 如何解决这个问题 我当前的代码如下所示 private void loadAddress() { DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users"); ref.orderByChild("uid").equalTo(fireb
mylocation
子对象中的数据(请参见附图)。但它不起作用。
如何解决这个问题
我当前的代码如下所示
private void loadAddress() {
DatabaseReference ref= FirebaseDatabase.getInstance().getReference("Users");
ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
String name=""+ds.child("name").getValue();
String lat=""+ds.child("name2").getValue();
addresstv.setText(name);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
要获取
mylocation
下的数据,可以使用对该子级的显式调用,如以下代码行所示:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("mylocation").child("name2").getValue(String.class);
double latitude = dataSnapshot.child("mylocation").child("latitude").getValue(Double.class);
double longitude = dataSnapshot.child("mylocation").child("longitude").getValue(Double.class);
Log.d("TAG", name + "/" + latitude + "/" + longitude);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
logcat中的结果将是:
5555/79.8571577/6.9448882