这是Firebase数据结构。

android - orderByChild()在Firebase数据库中不起作用-LMLPHP

在这里,我想选择所有值为“ stop”的节点并将其删除。我写了这段代码,但是没有用。

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文档中使用查询。如果还有其他方法(不使用查询),请告诉我。

最佳答案

我找到了答案,有一个问题我正在使用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) {

    }
});

关于android - orderByChild()在Firebase数据库中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44931813/

10-10 16:09