2017-01-16 5 views
0

In Relais, bei der Verwendung von REQUIRED_CHILDREN etwa so:Actual Eigenschaftsname auf REQUIRED_CHILDREN Connetion

return [{ 
     type: 'REQUIRED_CHILDREN', 
     children: [ 
     Relay.QL` 
      fragment on Payload { 
      myConnection (first: 50) { 
       edges { 
       node { 
        ${fragment} 
       } 
       } 
      } 
      } 
     ` 
     ] 
    }] 

und die Antwort durch den onSuccess Rückruf abliest:

Relay.Store.commitUpdate(
    new AboveMutation({ }), { onFailure, onSuccess } 
) 

die Antwort der Eigenschaft dreht myConnection in eine Hash-Name (dh __myConnection652K), der vermutlich verwendet wird, um Verbindungs-/Listenkonflikte innerhalb des Relaisspeichers zu verhindern.

Da dies jedoch ein REQUIRED_CHILDREN ist und ich manuell myConnection lesen, verhindert es nur den Zugriff darauf.

Gibt es eine Möglichkeit, die tatsächlichen Eigenschaftennamen zu erhalten, wenn Sie den onSuccess-Rückruf verwenden?

+0

Die Verwendung von 'REQUIRED_CHILDREN' bedeutet, dass Sie die Ergebnisse nicht speichern werden. Wie wäre es mit einem 'GraphQLList' Typ anstelle des Verbindungstyps? Sie können 'first' als Argument für die Mutation übergeben! –

Antwort

0

Genau wie Ahmad schrieb: mit REQUIRED_CHILDREN bedeutet, dass Sie nicht die Ergebnisse speichern werden. Die Folge davon ist, dass Daten, die dem Callback übergeben werden, in roher Form vorliegen (fast so, wie sie vom Server kommen) und data masking trifft nicht zu.

Obwohl die Daten nicht gespeichert werden, scheint es keinen Grund zu geben (obwohl die Meinung des Kernteam-Mitglieds hier sicherlich geeigneter wäre), es nicht in Client-Stil Form zu konvertieren. Dies ist die neueste Art von Mutation, daher besteht die Möglichkeit, dass diese Funktion versehentlich weggelassen wurde. Das ist normal, dass Abfragen in die Serverform Form umgewandelt werden, die umgekehrte Umwandlung könnte auch stattfinden. Aber bis jetzt wurde es nicht benötigt - während die Daten im Laden gespeichert wurden und die Komponentenrequisiten aktualisiert wurden, wurde die Transformation in der Zwischenzeit vorgenommen. Momentan konzentriert sich der Großteil des Relay-Teams stark darauf, einen Großteil der Implementierung neu zu schreiben, daher würde ich nicht erwarten, dass dieses Problem sehr bald verbessert wird.

Also wieder, Lösung von Ahmed vorgeschlagen, konvertieren Typ GraphQLList scheint die einfachste und zuverlässigste zu sein. Wenn aus irgendeinem Grund Verbindung bestehen soll, gibt es eine Option, die GraphQL fragment als children (tatsächlich die geparste Form, die in __cachedFragment__ Attribut dieses ursprünglichen Fragments gespeichert ist)für das gewünschte Feld (z. B. __myConnection652K).

Verwandte Themen