我有2个表(请求和驱动程序工作)。每个请求孩子(riderId)将有不同的电话号码。如何从当前的Requests键检索当前riderId,以便从driversWorking表中检索riderId位置(经度和纬度)。
以下是我的数据库:
答案 0 :(得分:0)
您可以使用嵌套查询来实现此目的。假设您有一个名为users
的节点并且同时是Firebase root的直接子节点并假设driversWorking
也是Firebase根目录的直接子节点,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference yourRef = userIdRef.child("users").child(userId);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String riderId = dataSnapshot.child("riderId").getValue(String.class);
DatabaseReference ref = rootRef.child("driversWorking").child(driverId).child("l");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
double zero = ds.child("0").getValue(Double.class);
double one = ds.child("1").getValue(Double.class);
Log.d("TAG", zero + " / " + one);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
yourRef.addListenerForSingleValueEvent(eventListener);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
ref.addListenerForSingleValueEvent(valueEventListener);
其中userId
是登录用户的ID,driverId
是驱动程序的ID。在您提供的示例中,可以是0163640500
。