-1
2つのテーブル(リクエストとドライバ)があります。すべてのリクエストの子(riderId)は異なる電話番号を持ちます。 driversWorkingテーブルからriderIdの場所(経度と緯度)を取得するために、現在のRequestsキーから現在のriderIdを取得するにはどうすればいいですか?以下はFirebaseから別のテーブルのアイテムを比較して取得する方法
私のデータベースです:
2つのテーブル(リクエストとドライバ)があります。すべてのリクエストの子(riderId)は異なる電話番号を持ちます。 driversWorkingテーブルからriderIdの場所(経度と緯度)を取得するために、現在のRequestsキーから現在のriderIdを取得するにはどうすればいいですか?以下はFirebaseから別のテーブルのアイテムを比較して取得する方法
私のデータベースです:
あなたはネストされたクエリを使用してこれを達成することができます。 userId
で
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);
:あなたはusers
という名前のノードを持ち、同じ時間であなたのFirebaseルートの直接の子であると仮定するとdriversWorking
はまたあなたFirebaseルートの直接の子であると仮定すると、次のコードを使用してくださいはログインしているユーザーのIDで、driverId
はドライバのIDです。あなたが与えた例では、0163640500
です。