2016-07-06 4 views
9

Firebase의 다음 구조에서 "name"필드에 "efg"가 포함되어있을 때 어떻게 "-KLpcURDV68BcbAvlPFy"키를 얻을 수 있습니까? Firebase의 값에서 키를 얻는 방법

clubs 
    -KLpcURDV68BcbAvlPFy 
     dept: "abc" 
     desc: "xyz" 
     name: "efg" 
    -asdasdasddsad 
     dept: "asda" 
     desc: "asd" 
     name: "adddd" 

나는이 시도하지만, "클럽"당신이 ValueEventListener을 사용하고 있기 때문이다

mDatabase.child("clubs").orderByChild("name").equalTo("efg").addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      String clubkey =dataSnapshot.getKey(); 

답변

12

를 반환했습니다. 쿼리가 여러 자식과 일치하면 해당 자식 모두의 목록을 반환합니다. 일치하는 하위 항목이 하나만있는 경우에도 여전히 하나의 일치 항목입니다. 그리고 그 목록에 getKey()을 호출 했으므로 쿼리를 실행 한 위치의 키를 얻습니다.

스냅 샷의 아이들을 통해 일치하는 어린이의 키, 루프를 활용하려면 다음

mDatabase.child("clubs") 
     .orderByChild("name") 
     .equalTo("efg") 
     .addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
      String clubkey = childSnapshot.getKey(); 

을하지만이 클럽의 이름이 고유한지 가정하면, 당신은뿐만 아니라 아래에있는 클럽을 저장할 수 있습니다 자신의 검색어없이 올바른 이름으로 액세스하십시오.

mDatabase.child("clubs") 
     .child("efg") 
     .addListenerForSingleValueEvent(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     String clubkey = dataSnapshot.getKey(); // will be efg 
+0

감사합니다. –

관련 문제