2017-12-20 11 views
0

Android 앱을 개발 중이며이 앱에서 사용자는 환경 설정에 따라 특정 언어를 알고있는 다른 사용자를 검색 할 수 있어야합니다. 그렇게하기 위해 원하는 언어를 얻고 데이터베이스에서 쿼리를 만들지 만 여기서 값을 가져 오는 방법을 알 수는 없습니다.Firebase 데이터베이스 하위 키 가져 오기 값

아래 그림에서 내 데이터베이스 구조를 볼 수 있습니다. 사용자가 "이탈리아어"라는 언어를 선택하면 이탈리아어를 아는 모든 사용자가 반환됩니다. 여기

FireBase Database STructure

코드입니다 : 그들은 이탈리아와 언어가있는 경우 예를 들어, RIDVAN와 페네르바체와 같은 사용자를 반환해야합니다. 여기

DatabaseReference myRootRef = FirebaseDatabase.getInstance().getReference("Users"); 



    myRootRef.child("Users").orderByChild("Languages").equalTo(Language).addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 



     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 


} 

답변

0

equalTo 놨 당신을, 값 Italian 없기 때문이다. 원할 것입니다

myRootRef.child("Users").orderByChild("Languages/Italian").startAt(" ") 

여기서 공간은 모든 결과를 얻을 수 있도록 매우 낮은 ASCII 값을 가진 문자입니다. 이 구조는 사용자의 노드의 각 언어에 대한 인덱스를 정의하는 것이 필요

참고 :

"Users": { 
    ".indexOn": ["Italian", "Spanish", "Polish"] 
} 

이 언어에 대한 가능할 수있다. 그러나 값을 사용자가 생성하면 인덱스의 유지 관리 문제가됩니다. 이 경우 역순 검색을 만드는 것이 좋습니다. 최상위 수준의 언어 목록과 각 언어에 대한 관련 사용자가 있습니다. 그것에 대한 자세한 내용은 여기 내 대답을 참조하십시오 : http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value.