2017-02-23 3 views
0

ich eine Firebase Datenbank, die ich versuche jedoch abfragen, ich bin ein Fehler zur Laufzeit immer sagenFirebase kann nicht nennen EqualTo() und startat() kombiniert

java.lang.IllegalArgumentException: Can't call equalTo() and startAt() combined 

Meine Datenbank ist als

versucht

DB

//DB refrence 
    myBikesDB = FirebaseDatabase.getInstance().getReference().child("Bikes Registered By User").child(ronan); 

    //query 
    query = myBikesDB.orderByChild("beaconUUID").startAt("!").endAt("~").equalTo(true, "stolen"); 

Also mit der Abfrage im folgenden alle DB-Objekt zurück, wenn der Wert beaconUUID nicht null ist, funktioniert dieses Bit richtig.

Allerdings, sobald ich ein zweites Kriterium .equalTo(true, "stolen") hinzufügen, bekomme ich den oben genannten Fehler.

Gibt es eine Möglichkeit, dass ich alle Elemente zurückgeben kann, die den Wert BeaconUUID als nicht null haben und gestohlen als wahr gesetzt haben.

Vielen Dank im Voraus.

+0

Ich würde empfehlen, einen weiteren Wert hinzuzufügen, der 'beaconUUID' und' gestohlen' kombiniert, da es schneller ist. Aber [hier ist der ausführliche Beitrag, der Ihnen helfen könnte] (http://stackoverflow.com/a/26701282/4112725) – koceeng

+0

Firebase-Datenbankabfragen können nur auf einer einzigen Eigenschaft bestellen/filtern. Oft können Sie die mehreren Werte in einer einzigen Eigenschaft kombinieren, um Ihren Anwendungsfall zu ermöglichen. Siehe http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

Antwort

1

Meiner Meinung nach können Sie diese Abfrage nicht machen. Die Fehlermeldung ist ziemlich klar. Aber was Sie tun können, es iterate durch alle Ihre Antwort Elemente und Filter diejenigen, die das Attribut "gestohlen" zu wahren haben.

Verwandte Themen