具有多个“EqualTo”的Firebase android查询

时间:2017-03-10 09:13:02

标签: android firebase firebase-realtime-database

这是我的Firebase结构:

"Braccianti" : {
        "-KehahFy7z2IrUdchwxk" : {
          "Associazione" : "-KehahFy7z4ngUdchwxk",
          "Cellulare" : "3402659753",
          "Cognome" : "Prova",
          "DataDiNascita" : "12/04/1985",
          "Nome" : "Bracciante"
        },
        "ashaosdfao" : {
          "Associazione" : "gsdfskjdfsdf",
          "Cellulare" : 234235246,
          "Cognome" : "Example",
          "DataDiNascita" : "10/12/2000",
          "Nome" : "exam"
        }
        "dfsdfsdfsdf" : {
          "Associazione" : "ewsvbdtgsdgf",
          "Cellulare" : 23523975553,
          "Cognome" : "Ex",
          "DataDiNascita" : "17/01/1994",
          "Nome" : "ghjghj"
        }
      }

我想通过一个查询获得“dfsdfsdfsdf”和“-KehahFy7z2IrUdchwxk”,所以我想这样做:

 Query QueryAssociazioni = FirebaseDatabase.getInstance().getReference("Aziende/"+main.getNomeAzienda()+"/Associazioni"); 
QueryAssociazioni = QueryAssociazioni.equalTo("dfsdfsdfsdf").equalTo("-KehahFy7z2IrUdchwxk");

但它不起作用。

我如何解决我的问题?

2 个答案:

答案 0 :(得分:1)

Firebase不允许多次查询,但您始终可以添加ChildEventListener并检查子项的值:

QueryAssociazioni.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        String child = dataSnapshot.getValue().toString();
        if(child.equals("dfsdfsdfsdf") || child.equals(("-KehahFy7z2IrUdchwxk"))){
            //Do something with the value
        }
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {

    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

答案 1 :(得分:-3)

QueryAssociazioni.child("Braccianti")
.orderByChild("Associazione") //key name
.equalTo("Associazione")  //value

试试这种方式...... 感谢。