【问题标题】:How return data from a GraphQL mutation?如何从 GraphQL 突变返回数据?
【发布时间】:2018-06-06 19:39:18
【问题描述】:

我下面有以下redux-form...如何获取console.log从graphQL突变结果数据中获取user.id?

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 });
      },
    }),
  }
);

谢谢!节日快乐

【问题讨论】:

  • 不知道这是否是一个错字,但您没有在引号之外记录结果对象。
  • @AarohMankad 谢谢,但这只是为了展示我正在尝试做的事情。我会更新...有什么想法吗?
  • 突变“signup”的 typedef 是否有返回值。例如: signup(authProvider: authProviderInput) : String 或类似的东西。例如: addAlley(alley: AlleyInput): Alley 这将添加新的胡同并返回胡同。
  • 返回的是“字符串或类似的东西”吗?

标签: reactjs graphql apollo graphql-js react-apollo


【解决方案1】:

在我看来,它应该是result.data.signup.id,但我们需要查看解析器和您的架构定义。这取决于解析器发回的内容。它应该是一个用户类型。

无论如何,你必须在你的突变中询问 id 否则它不会得到解决:

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

如果您对服务器有图形访问权限:

  • 点击右上角的DOCS按钮,然后
  • 点击mutation: Mutation
  • 那么您应该会看到如下内容:

signup(authProvider: AuthProviderNewcomerData!): User

那么你知道你会收到一个User 回复。

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 2019-06-20
    • 1970-01-01
    • 2018-06-18
    • 2020-07-27
    • 2021-04-01
    • 2020-05-08
    • 2017-11-27
    • 2019-04-22
    相关资源
    最近更新 更多