Wir haben einen graphql-Server (nicht in Javascript geschrieben), der eine paginierte Liste von Objekten bereitstellt. Wir versuchen, uns an die Relay-Spezifikation zu halten, aber wir haben einen interessanten Fall gefunden, der Klärung erforderlich machen könnte.Wie man Cursor verwaltet und in Relay sortiert?
Konkret: Werden Cursor von anderen Eingängen der Verbindung abhängig sein? Ähnlich wie https://github.com/graphql/graphql-relay-js/issues/20 verwendet unsere Verbindung ein sort_key-Argument, das die Sortierreihenfolge der zurückgegebenen Liste bestimmt. Abhängig von der angegebenen Sortierreihenfolge kann die Kante für ein Objekt unterschiedliche Cursorwerte zurückgeben (da der Server jeweils andere Informationen benötigt, um das nächste Objekt zu bestimmen). Ein sorgfältiges Lesen von https://facebook.github.io/relay/docs/guides-mutations.html#range-add deutet jedoch an, dass dies nicht erlaubt ist; Mutationen, die eine neu erstellte Kante zurückgeben, müssen einen einzelnen Cursor zurückgeben, der universell auf alle möglichen Listen angewendet werden kann, in denen diese Kante erscheinen kann. Wie löst Facebook dieses Problem?
ich, dass ich meine Sorge nicht denken, richtig erklärt, ist hier ein konkreteres Beispiel: Sie haben zwei Ansichten auf dem gleichen Relais-paginierte Liste, sortiert nach verschiedenen Feldern. Das gleiche Objekt erscheint in beiden Listen, aber mit unterschiedlichen Cursorn. Sie haben eine Mutation, um ein Objekt zu erstellen, mit einer 'RANGE_ADD', die unterschiedliche Verhaltensweisen für die zwei Ansichten angibt. Die Mutation auf der Serverseite muss einen einzelnen Cursor in der Antwort zurückgeben; Welchen der beiden Cursor gibt es zurück, und was macht die andere Ansicht, weil sie überhaupt keinen Cursor hat? – Evan
Guter Punkt. Es ist möglich, dass wir intern nicht darauf gestoßen sind, weil wir noch keine Mutationen auf Verbindungen aufgebaut haben, die solche Parameter annehmen. Lassen Sie uns [Ihr ursprüngliches GitHub-Problem] (https://github.com/facebook/relay/issues/760) erneut öffnen und sehen, ob wir eine Lösung ausarbeiten können. – wincent
Sie können vorhängen und anhängen, aber was ist mit den Artikel auf die 3. Position von oben nach unten zum Beispiel? Zum Beispiel hatten Sie eine Sache, sortiert nach Namen mit [A, B, D] und fügen Sie C hinzu? – FabioCosta