2017-12-12 4 views
-1

2 개의 테이블 (요청 및 드라이버 작업)이 있습니다. 모든 요청 아동 (riderId)은 다른 전화 번호를 갖습니다. driversWorking 테이블에서 riderId 위치 (경도 및 위도)를 검색하기 위해 현재 요청 키에서 현재 riderId를 검색하려면 어떻게해야합니까? 당신이 사용하는 중첩 된 쿼리를 달성 할 수Firebase에서 다른 테이블의 항목을 비교하고 검색하는 방법

답변

0

:

다음은 내 데이터베이스입니다. 당신이 노드가 users 이름과 같은 시간에 중포 기지 루트의 직접적인 자식과 driversWorking 가정하는 것은 또한 당신의 중포 기지 루트의 직접적인 자식이 가정하면, 다음 코드를 사용하십시오 :

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 수 있습니다.

관련 문제