我有这样的火力基地(我无法更改桌子的设计)
{
"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调用! 有人可以帮忙吗?如何按多个键值进行搜索?
谢谢!!!
答案 0 :(得分:1)
您不能同时使用“ visitorLocation = 04 && visitorId = 22”,但可以通过组合这两个字段来修改表结构,例如“ visitorLocation_visitoId = 04_22” 为此,您需要在Firebase数据库表结构中添加一个字段,以便您可以应用此AND查询