使用多个键搜索和更新Firebase

时间:2018-10-16 19:50:11

标签: android firebase firebase-realtime-database

我有这样的火力基地(我无法更改桌子的设计)

{
  "Visits" : {
    "-LOyE4h8k218xg-SI2Hy" : {
      "Enabled" : false,
      "visitorLocation" : "01",
      "visitorId" : "22"
    },
    "-LOyG4__aiiJ3FBVnWbU" : {
      "Enabled" : false,
      "visitorLocation" : "02",
      "visitorId" : "22"
    },
    "-LOyG5Wyu3cZmZFaCBxY" : {
      "Enabled" : false,
      "visitorLocation" : "03",
      "visitorId" : "22"
    },
    "-LOyG7gkUj8OFdEsyBGS" : {
      "Enabled" : false,
      "visitorLocation" : "04",
      "visitorId" : "22"
    }
  }
}

存储在Firebase中,

我将使用visitorLocation和visitorId进行搜索,然后更改Enabled值。

我现在拥有的是:

 DatabaseReference ref = 

FirebaseDatabase.getInstance().getReference("visitores");
//This is good, Returns the 4 nodes.
            Query q = ref.orderByChild("visitorId").equalTo("22");


            q.orderByChild("visitorLocation").equalTo("01").addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    dataSnapshot.getChildren().iterator().next().getKey();
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

但是后来我收到错误消息:您不能合并多个orderBy调用! 有人可以帮忙吗?如何按多个键值进行搜索?

谢谢!!!

1 个答案:

答案 0 :(得分:1)

您不能同时使用“ visitorLocation = 04 && visitorId = 22”,但可以通过组合这两个字段来修改表结构,例如“ visitorLocation_visitoId = 04_22” 为此,您需要在Firebase数据库表结构中添加一个字段,以便您可以应用此AND查询