2016-07-07 25 views
4

Normalerweise Relay query Objekt für Abfragen mit Einzel Definition erstellen, können unter Verwendung erfolgen:Updating Relaisspeicher für Abfragen mit mehreren Definitionen

const relayQuery = Relay.QL ` 
    query UserRoute($id_0: ID!) { 
    user(id:$id_0) { 
     id, 
     name, 
     email 
    } 
    } 
; 

ich Abfrage-String von dem einen abgefangen haben, die über das Netzwerk gesendet werden. Sie haben normalerweise mehrere Definitionen (z. B. Abfrage, Fragment, Mutation, Abonnement). Ich möchte eine Relay query object für diese Art von Abfrage erstellen. Der folgende Code führt Fehler:

Relay transform error "You supplied a GraphQL document named 'network' with 2 definitions, but it must have exactly one definition." in file '/Users/ankitshah/lyearnapp/src/network.js'. Try updating your GraphQL schema if an argument/field/type was recently added.

für diesen Code:

const relayQuery = Relay.QL ` 
    query UserRoute($id_0: ID!) { 
    user(id:$id_0) { 
     id, 
     ...F0 
    } 
    } 
    fragment F0 on User { 
    id, 
    name, 
    email 
    } 
; 

ich das will, weil ich Relay Store durch Relay.Store.getStoreData().updateQueryPayload(queryObject, payload) Funktion aktualisieren möchten. Jede Hilfe wird geschätzt.

+0

Ist Ihr Problem gelöst., –

Antwort

0

Ich traf den gleichen Fehler. Sie müssen Ihre Abfrage komprimieren, um ohne Fragmente wie folgt zu sein:

const relayQuery = Relay.QL ` 
    query UserRoute($id_0: ID!) { 
    user(id:$id_0) { 
     id, 
     name, 
     email 
    } 
    } 
; 

Dann funktionierte es.

0

Verwenden Sie Namedspaces. ZB

user1 :user(id:$id_0) { 
    id, 
    name, 
    email 

}

user2 :user(id:$id_1) { 
    id, 
    name, 
    email 

}