Abbiamo un server graphql (non scritto in javascript) che serve un elenco impaginato di oggetti. Stiamo provando a conformarci alle specifiche del relè, ma abbiamo riscontrato un caso interessante che potrebbe servirci di chiarimenti.Come gestire i cursori e l'ordinamento in Relay?
In particolare: i cursori sono autorizzati a dipendere da altri input per la connessione? Simile a https://github.com/graphql/graphql-relay-js/issues/20, la nostra connessione accetta un argomento sort_key che determina l'ordinamento della lista restituita. A seconda dell'ordine di ordinamento specificato, il bordo di un oggetto può restituire valori di cursore diversi (poiché il server ha bisogno di informazioni diverse in ciascun caso per determinare l'oggetto successivo). Tuttavia, un'attenta lettura di https://facebook.github.io/relay/docs/guides-mutations.html#range-add suggerisce che ciò non è permesso; le mutazioni che restituiscono un bordo appena creato devono restituire un singolo cursore che può essere applicato universalmente a tutte le possibili liste in cui può apparire quel bordo? In che modo Facebook risolve questo problema?
Non credo che ho spiegato la mia preoccupazione correttamente, ecco un esempio più concreto: si dispone di due viste della stessa lista relè-impaginato, ordinati per campi diversi. Lo stesso oggetto appare su entrambi gli elenchi, ma con cursori diversi. Hai una mutazione per creare un oggetto, con un 'RANGE_ADD' che specifica comportamenti diversi per le due viste. La mutazione sul lato server deve restituire un singolo cursore nella risposta; quale dei due cursori restituisce, e cosa fa l'altra vista visto che non ha un cursore? – Evan
Buon punto. È possibile che non ci siamo imbattuti in questo internamente perché non abbiamo ancora costruito mutazioni sulle connessioni che utilizzano questo tipo di parametro. Riapre nuovamente [il tuo problema originale su GitHub] (https://github.com/facebook/relay/issues/760) di nuovo e vediamo se possiamo elaborare una soluzione. – wincent
Puoi anteporre e aggiungere ma per esempio, mettere l'elemento in terza posizione dall'alto verso il basso? Ad esempio hai una cosa ordinata per nome con [A, B, D] e aggiungi C? – FabioCosta