Was ist die Bedeutung des viewer-Feld in GraphQL?
Was ist der Zweck des root-Abfrage-Feld viewer
im GraphQL?
Basierend auf dieser Artikel, viewer
verwendet werden könnte, zu akzeptieren, eine token-parameter, so können wir sehen, wer derzeit angemeldet ist.
Wie soll ich das umsetzen?
- es gibt keine Notwendigkeit für den viewer-Muster mehr in Relais Modern
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zweck
viewer
root-Abfrage-Feldviewer
ist nicht etwas, was GraphQL oder Relais-spezifisch. Die meisten web-Anwendungen dienen einige Zwecke, die der Nutzer oder Zuschauer. Die top-level-entity zu modellieren, die verschiedene Daten an den Benutzer benannt werden können alsviewer
. Sie können es auch nennenuser
. Zum Beispiel, die Relais todo-Beispiel hat eineviewer
root-Abfrage-Feld:Können wir auch ohne
viewer
. Zum Beispiel, Relais starwars-Beispiel keineviewer
root-Abfrage-Feld.Kurz gesagt, mit dieser
viewer
als root-Abfrage-Feld der GraphQL-schema ermöglicht es, die Daten basierend auf den aktuellen Benutzer.Umsetzung: Verwendung von token zur Authentifizierung, zusammen mit viewer
Meine Antwort folgt, was bereits beschrieben in Ihrem Artikel erwähnt. Die Schritte sind:
Auf der server-Seite, erstellen Sie eine mutation erhalten Sie ein Authentifizierungs-token. Nennen wir es
LoginMutation
. Input für diese mutation sind die Anmeldeinformationen des Benutzers und die Ausgabe ist ein Authentifizierungs-token.Auf der client-Seite, wenn Sie relais-framework, implementieren Sie eine client-side-mutation. Nach der mutation erfolgreich ist, speichern Sie die Authentifizierungs-token.
Auf der client-Seite Relais-code, fügen Sie
authToken
parameter für Ihreviewer
Abfragen. Der Wert vonauthToken
ist das Authentifizierungs-token erhalten nach erfolgreicher Anmeldung mutation.Eine alternative
Wie bereits im Artikel erwähnt, eine alternative Möglichkeit der Authentifizierung von Benutzer, es zu tun außerhalb der GraphQL. Sie können sehen, zwei hervorragende Antworten diese und diese für details.
Jonas Helfer schrieb einen zweiteiligen Artikel über diese, die Sie finden sehr nützlich: Teil 1, Teil 2
Die Idee hinter der
viewer
Bereich (design pattern) war die Gruppe der top-level-query-Felder sind nur relevant, auf die der aktuell angemeldete Benutzer. Zum Beispiel:Diese aktuell angemeldeten Benutzer Daten wurde entweder zusammengeführt
viewer
Feld selbst oder geschachtelte es unter:Alle drei Beispiele oben kann vereinfacht werden durch entfernen der
viewer
Feld zusammen und haben immer noch die gleiche Funktionalität (empfohlen):Finden Sie das komplette Beispiel in Reagieren Starter Kit das verwendet werden kann entweder als Referenz oder einen Samen/Vorlage für neue Entwicklungen. Sehen
src/server/schema.js
.