Ein Projekt, das ich geerbt habe, verwendet derzeit Parse für das Backend. Ich versuche zu migrieren, wie die Daten abgerufen / gepostet werden, vom Parse iOS SDK zur Verwendung der Parse REST API (mit AFNetworking
).
Ich konnte ein einfaches PFQuery
wie das Folgende in sein REST-Äquivalent konvertieren:
PFQuery
REST-API-Anforderung :
%Vor%Das Problem besteht jedoch bei zusammengesetzten Abfragen wie der folgenden:
%Vor% Wenn jemand mir helfen könnte, zu verstehen, wie ich parameters
dafür konstruiere, würde ich es sehr schätzen. Eine allgemeine Idee, wie man in die richtige Richtung geht, wird ebenfalls helfen. Ich habe den Parse REST-API-Leitfaden erwähnt, aber ich kann es nicht verstehen. Ich versuche es mit $inQuery
richtig zu machen, aber noch kein Glück.
Eine Antwort auf diese Frage deckt die meisten allgemeinen und komplexen Probleme ab, mit denen Sie bei der Abfrage mit der Parse-REST-API (unter iOS) konfrontiert sind.
Ein Projekt, das ich geerbt habe, verwendet derzeit Parse für das Backend. Ich versuche zu migrieren, wie die Daten abgerufen / gepostet werden, vom Parse iOS SDK zur Verwendung der Parse REST API (mit %code% ).
Ich konnte ein einfaches %code% wie das Folgende in sein REST-Äquivalent konvertieren:
%code%
%Vor%REST-API-Anforderung :
%Vor%Das Problem besteht jedoch bei zusammengesetzten Abfragen wie der folgenden:
%Vor%Wenn jemand mir helfen könnte, zu verstehen, wie ich %code% dafür konstruiere, würde ich es sehr schätzen. Eine allgemeine Idee, wie man in die richtige Richtung geht, wird ebenfalls helfen. Ich habe den Parse REST-API-Leitfaden erwähnt, aber ich kann es nicht verstehen. Ich versuche es mit %code% richtig zu machen, aber noch kein Glück.
Eine Antwort auf diese Frage deckt die meisten allgemeinen und komplexen Probleme ab, mit denen Sie bei der Abfrage mit der Parse-REST-API (unter iOS) konfrontiert sind.
Transformative Verwendung von $ oder
Ich denke, dass Sie den folgenden Anruf in einen relevanten HTTP-Anruf mit der Bibliothek Ihrer Wahl (AFNetworking) transformieren möchten. Wie Sie sehen können, ist das Unterabfrageverhalten in eine spezifische codierte URL eingebettet, die ein Array mit einem Wörterbuch enthält, dessen Werte Wörterbücher mit Vergleichsanweisungen sind.
%Vor%( Quelle )
Ein anderer Ansatz wäre die Verwendung von Unterklassenabfragen.
Abfragen der Unterklasse
Sie können eine Abfrage für Objekte einer bestimmten Unterklasse mithilfe der Klassenmethodenabfrage abrufen. Das folgende Beispiel fragt nach Rüstungen, die der Benutzer sich leisten kann:
%Vor%( Quelle )
Relationale Abfragen
Es gibt mehrere Möglichkeiten, Abfragen für relationale Daten auszuführen. Wenn Sie Objekte abrufen möchten, bei denen ein Feld mit einem bestimmten PFObject übereinstimmt, können Sie whereKey: equalTo verwenden: genau wie für andere Datentypen. Wenn zum Beispiel jeder Kommentar ein Post-Objekt in seinem Post-Feld hat, können Sie Kommentare für einen bestimmten Post abrufen:
%Vor%Ein Parse-Blog Post erwähnt auch, dass Prädikate mithilfe von:
weiter verbessert werden könnenDerzeit unterstützen wir diese NSPredate-Funktionen:
Einfache Vergleiche wie =,! =, & lt ;, & gt ;, & lt; =, & gt; =, und BETWEEN mit einem Schlüssel und eine Konstante. Containment-Prädikate wie x IN {1, 2, 3}. Schlüssel-Existenz-Prädikate wie x IN SELF. Beginnt mit Ausdrücken. Zusammengesetzte Prädikate mit UND, ODER und NICHT. Sub-Abfragen mit "Schlüssel IN % @ ", Unterabfrage. Weitere Einzelheiten und Beispiele finden Sie in unseren Dokumenten.
Spezielle Tipps zum Zerlegen von Parametern
Ich würde vorschlagen, alle Beispiele zu bewerten, die zeigen, wie REST-API-Werte interpretiert werden. Beachten Sie, dass die meisten Übertragungen wahrscheinlich ein JSON-ähnliches Format darstellen. In diesen Fällen sind '[' eckige Klammern Arrays, '{' geschweifte Klammern symbolisieren Wörterbücher und Sie möchten die parametrisierten Daten verschlüsseln, bevor Sie sie in Ihre http-Anfrage einfügen.
Angewandte Information
Unter Berücksichtigung dessen, was oben besprochen wurde, können Sie einen REST-API-Aufruf erstellen. Sie müssen die Where-Klausel der verschiedenen für Ihren Anwendungsfall spezifischen Kriterien codieren. Die folgende Methode kann verwendet werden, um sicherzustellen, dass diese Parameter den von Ihnen benötigten Abfrageeigenschaften entsprechen:
%Vor%Angenommen, der obige Parameter ist eine Zeichenfolge mit ähnlichen Schlüsselwerten wie:
%Vor%Die codierten Parameter werden nach der Anwendungs-ID und dem REST-API-Schlüssel zur grundlegenden REST-API-Abfragezeichenfolge hinzugefügt. Dies sollte die gewünschten Objekte zurückgeben: (Beachten Sie die vierte URL, die für Abfragen verwendet wird.)
Es sieht so aus, als sollten die codierten Parameter nach dem oben angegebenen Klassennamen wie im folgenden Beispiel gehen:
(Extrapolieren Sie Ihre Werte mit dem obigen Format, beachten Sie auch die zusätzlichen Zeichen in der Abfragezeichenfolge "... Klassenname ?% s codedParams ").
Weitere Abfrageoperatoren, die Sie verwenden möchten, sind:
Zusätzliche Abfragebeispiele
Man könnte extrapolieren, wie komplexere Abfragen erstellt werden, indem die mitgelieferten Beispiele auf der Parse-Website verwendet werden. Das Packen dieser Abfragen in codierte Parameter sollte die gewünschten Ergebnisse liefern. Ich würde zunächst eine Abfrage mit der regulären Parse-API erstellen und diese dann in das oben angegebene REST-API-Konstrukt konvertieren.
Beispiel:
%Vor%Spezifische Antwort auf Ihr Hauptproblem
Nachdem ich die Frage erneut gelesen hatte, wollte ich auf Ihr spezifisches Problem antworten, indem ich mehrere Unterabfragen in die REST-API-Parameterliste aufnehmen musste. Ich denke, dass eine genaue Überprüfung der $ oder Klausel nützlich wäre. Solange Sie verwandte Schlüssel auf das Foto-Objekt in das Mehrfachkriterium anwenden können, sollten Sie in der Lage sein, Ihr Ziel zu erreichen.
%Vor%Zusammengesetztes Abfragebeispiel
Die $ or-Klausel ist das Beispiel, das auf der Parse-Website unter zusammengesetzten Abfragen verwendet wird. Der obige Code kann in Ihren Anwendungsfall transponiert und mit der zuvor angegebenen codierten URL-Methode angewendet werden.
Nota Bene
Beachten Sie, dass das folgende Beispiel den Abruf mehrerer verwandter Objekte (mit $ inQuery) zeigt. Es gibt Grenzen in Bezug darauf, wie viele innere Objekte abgerufen werden können.Ich habe bemerkt, dass dies im Grunde die Äquivalenz dessen ist, was Sie im Code tun, also wäre die Extrapolation hoffentlich relativ einfach, wenn Sie dieses Beispiel verwenden.
Vorsicht
Bitte beachten Sie dieses Warnwort von Parse zum Zeitpunkt der Verwendung der REST-API.
Tags und Links objective-c ios rest parse.com