Advanced Guides
Parse 3.10 Kompatibilität mit Relay für Entwickler
15 min
relay kompatibilität einführung die parse server graphql api folgt den neuesten standards, die derzeit für hochskalierbare apis und ehrgeizige front end projekte verfügbar sind das parse open source team hat sich entschieden, die graphql server relay https //relay dev/docs/en/graphql server specification spezifikation zu befolgen relay ist ein javascript framework zum erstellen von datengetriebenen react anwendungen, die von graphql unterstützt werden es wurde von grund auf so konzipiert, dass es einfach zu bedienen, erweiterbar und vor allem leistungsfähig ist relay erreicht dies mit statischen abfragen und der code generierung zur compile zeit ab parse 3 10 wird vollständige kompatibilität mit relay https //relay dev/docs/en/graphql server specification implementiert dieses dokument wird sie durch diese implementierungen führen voraussetzungen um mit diesem tutorial zu beginnen, benötigen sie eine app, die bei back4app erstellt wurde siehe das tutorial zum erstellen einer neuen app , um zu lernen, wie man eine app bei back4app erstellt 1 erstellen sie eine neue back4app app zunächst ist es notwendig, sicherzustellen, dass sie eine vorhandene app bei back4app erstellt haben wenn sie jedoch ein neuer benutzer sind, können sie dieses tutorial https //www back4app com/docs/get started/new parse app überprüfen, um zu lernen, wie man eine erstellt 2 erstellen sie einige klassen gehen sie in ihrer neu erstellten app zum datenbank browser datenbank browser und klicken sie auf die klasse erstellen klasse erstellen schaltfläche wählen sie aus, eine benutzerdefinierte benutzerdefinierte klasse zu erstellen und geben sie ihr einen namen folgend dem relay beispielschema https //relay dev/docs/en/graphql server specification#schema , habe ich die klassen faction, ship und andere mit entsprechenden eigenschaften erstellt, aber sie können ihre klassen erstellen, um dieser dokumentation zu folgen ändern sie einfach ihre abfragen und mutationen entsprechend denken sie daran, dass klassen konventionell mit einem großbuchstaben beginnen, camelcase sind und keine sonderzeichen wie leerzeichen und symbole enthalten klicken sie auf klasse erstellen klasse erstellen , wenn sie fertig sind 3 graphql konsole mit ihren klassen und eigenschaften erstellt, können sie zur api konsole api konsole und dann zur graphql konsole graphql konsole gehen, um ihre abfragen und mutationen auszuführen 4 abfragen unsere erste abfrage wird ein objekt basierend auf seiner objectid objectid abrufen (nicht zu verwechseln mit id id ) parse hat sich weiterentwickelt und jetzt unterstützen abfragen sowohl objectid objectid , früher bekannt als id id in früheren versionen, unterstützt jetzt aber auch global id global id , bekannt als id id , das sich auf relays globale id bezieht und ein längeres format hat, da es den klassennamen verschlüsselt enthält beispiel für objectid objectid eat0ddk09v beispiel für id id (auch bekannt als globale id) rmfjdglvbjpfyvqwzerrmdl2 lassen sie uns unsere erste abfrage erstellen, um ein objekt anhand seiner objectid objectid 1 query rebelsquery { 2 faction(id "eat0ddk09v") { 3 objectid #objectid for parse 4 id #globalid for relay 5 name #n 6 } 7 } das wird ausgegeben 1 { 2 "data" { 3 "faction" { 4 "objectid" "eat0ddk09v", 5 "id" "rmfjdglvbjpfyvqwzerrmdl2", 6 "name" "galactic empire" 7 } 8 } 9 } jetzt ändern wir das für die globalid für relay 1 query rebelsquery { 2 faction(id "rmfjdglvbjpfyvqwzerrmdl2") { 3 objectid #objectid for parse 4 id #globalid for relay 5 name #n 6 } 7 } und beachten sie, dass das ergebnis dasselbe sein wird 1 { 2 "data" { 3 "faction" { 4 "objectid" "eat0ddk09v", 5 "id" "rmfjdglvbjpfyvqwzerrmdl2", 6 "name" "galactic empire" 7 } 8 } 9 } dies geschieht, weil die globale id globale id funktioniert, wie der name schon sagt, global und hat den klassennamen darin verschlüsselt, sodass parse weiß, wo es nach dieser id suchen soll 5 erneutes abrufen auch mit der globale id globale id können sie vorab abrufen wie relays spezifikation https //relay dev/docs/en/graphql server specification#object identification wie folgt 1 query refetchquery{ 2 node(id "rmfjdglvbjpfyvqwzerrmdl2"){ 3 id on faction{ 4 name 5 } 6 } 7 } was zu folgendem ergebnis führt 1 { 2 "data" { 3 "node" { 4 "id" "rmfjdglvbjpfyvqwzerrmdl2", 5 "name" "galactic empire" 6 } 7 } 8 } 6 verbindungen die verbindungen von relay https //relay dev/docs/en/graphql server specification#connections funktionieren auf die gleiche weise in parse mit graphql, also, wenn sie die schiffe der rebellen abrufen müssen 1 query rebelsshipsquery { 2 faction(id "rmfjdglvbjphctaznklsz2rq"){ 3 objectid 4 name 5 ships{ 6 edges{ 7 node{ 8 name 9 } 10 } 11 } 12 } 13 } was folgendes ergibt 1 { 2 "data" { 3 "faction" { 4 "objectid" "aq036irgdp", 5 "name" "alliance to restore the republic", 6 "ships" { 7 "edges" \[ 8 { 9 "node" { 10 "name" "y wing" 11 } 12 }, 13 { 14 "node" { 15 "name" "x wing" 16 } 17 } 18 ] 19 } 20 } 21 } 22 } sie können auch die n ten schiffe abrufen 1 query rebelsshipsquery { 2 faction(id "rmfjdglvbjphctaznklsz2rq"){ 3 objectid 4 name 5 ships(first 1){ 6 edges{ 7 node{ 8 name 9 } 10 } 11 } 12 } 13 } was zu folgendem führt 1 { 2 "data" { 3 "faction" { 4 "objectid" "aq036irgdp", 5 "name" "alliance to restore the republic", 6 "ships" { 7 "edges" \[ 8 { 9 cursor 10 "node" { 11 "name" "y wing" 12 } 13 } 14 ] 15 } 16 } 17 } 18 } oder rufen sie das n te schiff nach einem bestimmten, unter verwendung seines cursor wertes ab 1 query rebelsshipsquery { 2 faction(id "rmfjdglvbjphctaznklsz2rq"){ 3 objectid 4 name 5 ships(first 1 after "yxjyyxljb25uzwn0aw9uoja"){ #cursor for the y wing ship 6 edges{ 7 cursor 8 node{ 9 name 10 } 11 } 12 } 13 } 14 } was abgerufen wird 1 { 2 "data" { 3 "faction" { 4 "objectid" "aq036irgdp", 5 "name" "alliance to restore the republic", 6 "ships" { 7 "edges" \[ 8 { 9 "cursor" "yxjyyxljb25uzwn0aw9uoje=", 10 "node" { 11 "name" "x wing" 12 } 13 } 14 ] 15 } 16 } 17 } 18 } 7 mutationen wir können auch mutationen verwenden, die mit relay mutationen https //relay dev/docs/en/graphql server specification#mutations lassen sie uns ein neues schiff schiff 1 mutation createbwing($input createshipinput!){ 2 createship(input $input){ 3 ship{ 4 id 5 name 6 } 7 } 8 } das benötigt die folgende abfragevariable 1 { 2 "input" { 3 "fields" { 4 "name" "b wing" 5 } 6 } 7 } und wird die globale id globale id und name name zurückgeben, wie in der mutation angegeben 1 { 2 "data" { 3 "createship" { 4 "ship" { 5 "id" "u2hpcdpxb21qznvzexvf", 6 "name" "b wing" 7 } 8 } 9 } 10 }