简体   繁体   中英

How return data from a GraphQL mutation?

I have the following redux-form below... How can I get the console.log to obtain the user.id from the graphQL mutation result data?

const withForm = compose(
  withMySignupMutation,
  reduxForm({
    ...
    onSubmit: async (values, dispatch, {
      mySignup,
    }) => {
      try {
        const result = await mySignup(values);
        console.log('I Need user.id here');
        console.log(result.user.id);
        ...

withMySignupMutation

import { graphql } from 'react-apollo';
import gql from 'graphql-tag';

export const SIGNUP_MUTATION = gql`
mutation (
  $email: String!
  $name: String!
) {
  signup(authProvider: {
    mySignup: {
      email: $email
      name: $name
    }
  }) {
    token
  }
}
`;

export default graphql(
  SIGNUP_MUTATION,
  {
    props: ({ mutate }) => ({
      mySignup: async (variables) => {
        const { data } = await mutate({ variables });
      },
    }),
  }
);

Thank you! happy holidays

In my opinion, it should be result.data.signup.id but we need to see the resolvers and your schema definition. It depends on what the resolvers are sends back. It should be a User type.

Anyway, you must ask for the id in your mutation otherwise it won't get resolved:

export const SIGNUP_MUTATION = gql`
mutation (
  $email: String!
  $name: String!
) {
  signup(authProvider: {
    mySignup: {
      email: $email
      name: $name
    }
  }) {
    token
    id ### <===HERE===
  }
}
`

And if you have a graphiql access to the server:

  • click on the top-right corner the DOCS button, then
  • click mutation: Mutation
  • then you should see something like:

signup(authProvider: AuthProviderNewcomerData!): User

Then you know you will get a User back.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM