2017-05-09 1 views
0

Es ist so verdrahtet Parse-Abfrage in Array von Zeigern nicht auf + 4.4 unten und alles funktioniert gut für 5 arbeiten,Android 4.4 + Parse.com Abfrage Array von Zeigern

ParseQuery<ParseObject> firstQuery = new ParseQuery<ParseObject>(CLASSNAME); 
    firstQuery.whereEqualTo(COLOUMNNAME1, ParseUser.getCurrentUser()); 

    ParseQuery<ParseObject> secondQuery = new ParseQuery<ParseObject>(CLASSNAME); 
    secondQuery.whereEqualTo(COLOUMNNAME2, ParseUser.getCurrentUser()); 

    List<ParseQuery<ParseObject>> queries = new ArrayList<ParseQuery<ParseObject>>(); 
    queries.add(firstQuery); 
    queries.add(secondQuery); 

    ParseQuery<ParseObject> mainQuery = ParseQuery.or(queries); 

zweite Abfrage ist Array von Parse Benutzerzeiger.

Hinweis: In Android 5 geben alle übereinstimmenden Daten in beiden zurück. in Android 4.4 geben alle übereinstimmenden Daten nur in der ersten Abfrage zurück.

+0

Was macht die erste Abfrage genau anders? –

+0

Haben Sie die Parse-Debug-Protokollierung verwendet, um sicherzustellen, dass es in dieselbe Datenbank geht? – nasch

+0

@JakeT. erste Abfrage Filter in Spalte von Parse Benutzer und arbeiten für beide 4.4 und 5 + –

Antwort

1

Es scheint, es ist schon eine Lösung für dieses, wie von 5 Tagen, obwohl es nicht zusätzliches Feedback ist, dass es funktioniert hat: https://github.com/parse-community/parse-server/issues/175

Vergewissern Sie sich auf dem neuesten Parse-Server sind und vielleicht ist es Ich werde arbeiten.

Darüber hinaus werden zwei Lösungen angeboten: 1) Refactor Ihr Code zum Speichern von Arrays von ObjectIds anstelle von Zeigern. Dies ist nicht kaputt.

2) Umstellen Sie Ihren Code, anstatt whereEqualTo aufzurufen, rufen Sie whereContainsAll auf, und übergeben Sie ein einzelnes Elementarray mit dem Zeiger, den Sie benötigen. Diese Funktion scheint nicht kaputt zu sein.

+1

Vielen Dank, es funktioniert jetzt nach der Verwendung whereContainsAll –