2017-05-13 2 views
0

Ich habe Mutationen -Variable ID! in graphql Mutation undefiniert bleibt

`export const setTimeLineOnUser = gql 
    mutation ($tID: ID!, $uID: ID!){ 
     setTimeLineOnUser(userTimeLineId: $tID, timeLineUserId: $uID){ 
      userTimeLine { 
       id 
       updatedAt 
       posts{ 
        id 
        postType 
        updatedAt 
       } 
      } 
      timeLineUser { 
       id 
       name 
       email 
      } 
     } 
    };` 

und eine Funktion, die wie folgt aussieht -

`this.props.createTimeLine().then((response) => { 
      console.log(response.data.createTimeLine.id); 
      this.addTimeLineToUser(response.data.createTimeLine.id, this.props.userQuery.user.id); 
     });` 

Benutzer hat ein ein -zu einem Beziehungen wie diese -

`setTimeLineOnUser(userTimeLineId: ID!, timeLineUserId: ID!): SetTimeLineOnUserPayload` 

jetzt am Laufen bekomme ich diesen Fehler -

Error: GraphQL error: Variable '$tID' expected value of type 'ID!' but value is undefined. Reason: Expected non-null value, found null. (line 1, column 11): mutation ($tID: ID!, $uID: ID!) { ^ GraphQL error: Variable '$uID' expected value of type 'ID!' but value is undefined. Reason: Expected non-null value, found null. (line 1, column 22): mutation ($tID: ID!, $uID: ID!) { ^ at new ApolloError (apollo.umd.js:1959) at apollo.umd.js:2670 at tryCallOne (core.js:37) at core.js:123 at JSTimers.js:117 at Object.callTimer (JSTimersExecution.js:95) at Object.callImmediatesPass (JSTimersExecution.js:199) at Object.callImmediates (JSTimersExecution.js:214) at MessageQueue.js:228 at MessageQueue.__guard (MessageQueue.js:218)

obwohl console.log(this.props.userQuery.user.id); gültige ID zurückgibt! Ich habe sogar versucht, die Mutation zu machen, indem ich die IDs den Zuständen zuweise, damit sie nicht null sind, aber immer noch keine Verwendung !!! was mache ich falsch?

wenn Sie gehen, um die Dateien sehen hier - Gist

Antwort

0

Das Problem ist, wenn Sie die addTimelineToUser Sie ein Objekt geben nennen, aber Sie beide Parameter benötigen.

componentDidMount(){ 
 

 
     this.props.createTimeLine().then((response) => { 
 
      // this.addTimeLineToUser({ tID: response.data.createTimeLine.id, uID: this.props.userQuery.user.id }) wrong 
 
      this.addTimeLineToUser(response.data.createTimeLine.id, this.props.userQuery.user.id) 
 
     }); 
 
    } 
 

 

 
    addTimeLineToUser = (tId, uId) => { 
 
     this.props.setTimeLineOnUser({variables: {tId, uId}}) 
 
      .then((response) => { 
 
       console.log(response); 
 
      }).catch((err) => { 
 
       console.log(err); 
 
     }); 
 
    };

Und es könnte sein, dass dies nicht funktioniert, weil im, wenn die Abfrage nicht sicher funktioniert hat innerhalb der Komponente geladen wird montieren.

+0

console.log (this.props.userQuery.user.id); in componentDidMount gibt tatsächlich null nicht zurück undefined gibt die uid zurück. noch bevor die Funktion ausgelöst wird –

+0

dieser hat tatsächlich funktioniert! habe es für 3 Tage mit verschiedenen Kombinationen versucht und das hat wirklich funktioniert. danke –

+0

Großartig! Ein Vergnügen, um zu helfen –

Verwandte Themen