2017-07-05 13 views
1

firebaseのデータ構造は次のとおりです。orderByChild()がFirebaseデータベースで動作していません

Firebase datastructure

は、ここで私は値が「停止」を持つすべてのノードを選択し、それらを削除したいです。私はこのコードを書くが、これは動作していない。

final Map<String, Object> map = new HashMap<String, Object>(); 
Query numberQuery = reference.child("numbers").orderByChild("stop"); 
numberQuery.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if (dataSnapshot.exists()){ 
     for (DataSnapshot eachDataSnapShot : dataSnapshot.getChildren()) { 
       map.put("/numbers/"+eachDataSnapShot.getKey(), null); 
      } 
     } 
    } 
    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
    }); 

    reference.updateChildren(map); 

実際、私はfirebase文書でどのようにクエリを使用するかを知りませんでした。他の方法があれば(質問を使わないで)教えてください。

+0

試みは、私はちょうどそれを取得し、あなたの答えのための 'orderByValue()' –

+0

感謝を使用するために、私はorderByValue()。equalTo( "停止")に( "停止")orderByChildを変更し、それが働きました。 –

答えて

1

は、私はorderByChild()を使用していた一つの問題がありましたが、私はそこにorderByValue()を使用する必要がありました。だからちょうどorderByChild("stop")orderByValue().equalTo("stop")に変更しました。

Query numberQuery = reference.child("numbers").orderByValue().equalTo("stop"); 

numberQuery.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if (dataSnapshot.exists()){ 
      for (DataSnapshot eachDataSnapShot : dataSnapshot.getChildren()) { 
       map.put("/numbers/"+eachDataSnapShot.getKey(), null); 
      } 
      reference.updateChildren(map); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) { 

    } 
}); 
0

あなたがorderByValue()を使用することができ、それはそれをこのようにソートします:指定された子キーにnull値を持つ

  1. 子供が最初に来ます。
  2. 指定された子キーの値がfalseの子が次に来る。複数の子がfalseの値を持つ場合は、キーによって辞書形式で ソートされます。
  3. 指定した子キーの値がtrueの子が次に送られます。複数の子がtrueの値を持つ場合、キーによって辞書形式で ソートされます。
  4. 数値を持つ子が次に来て、昇順にソートされます。複数の子が指定された子ノードの の数値が同じ場合、それらはキーでソートされます。
  5. 文字列は数字の後に来て、辞書順に昇順にソートされます。複数の子が指定された子ノード の同じ値を持つ場合、キーによって辞書順に並べ替えられます。
  6. オブジェクトは最後に来て、昇順でキーによって辞書順にソートされます。

私はこのための答えを見つけたチェックthis

関連する問題