Zusammengesetzte Abfrage für Parse.com mithilfe der REST-API

8

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

%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 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.

    
n00bProgrammer 13.05.2015, 12:53
quelle

1 Antwort

2
___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Funktionen beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die zugehörigen Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind. ___ tag123rest ___ REST (Representational State Transfer) ist eine Art von Softwarearchitektur für verteilte Hypermedia-Systeme wie das World Wide Web. Es hat im Vergleich zu RPC-Architekturen wie SOAP aufgrund der intrinsischen Entkopplung von Client von Server, die von einer einheitlichen Schnittstelle zwischen heterogenen Systemen herrührt, an Popularität gewonnen. ___ tag123parsecom ___ Der gehostete Parse.com-Dienst wurde zugunsten des selbst gehosteten Open-Source-Servers von Parse Server eingestellt. Fragen zu diesem Back-End oder dem Parse SDK sollten mit dem Tag 'parse-server' versehen werden. Fragen nach Alternativen zu parse.com sind OFF-THEMA. ___ tag123ios ___ iOS ist das mobile Betriebssystem, das auf dem Apple iPhone, iPod touch und iPad ausgeführt wird. Verwenden Sie dieses Tag [ios] für Fragen zur Programmierung auf der iOS-Plattform. Verwenden Sie die verwandten Tags [objective-c] und [swift] für Probleme, die für diese Programmiersprachen spezifisch sind. ___ qstnhdr ___ Zusammengesetzte Abfrage für Parse.com mithilfe der REST-API ___ qstntxt ___

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.

    
___ answer30440341 ​​___

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önnen
  

Derzeit 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.

    
___
Tommie C. 25.05.2015, 14:13
quelle

Tags und Links