graphql - Apollo Mutation 可以返回自定义结果对象吗?

标签 graphql apollo react-apollo

从 Apollo 突变返回的结果通常是类型或类型的字段子集,这通常很棒。所以我的突变:

const addUserMutation = gql`
  mutation createUser($email: String!, $permissions: [CreatePermissionInput]) {
    createUser(input: {email: $email, permissions: $permissions}) {
      id
      created
      lastUpdated
      uid
      email
      permissions {
        who
        ...
      }
    }
  }
`

哪个在调用:

extend type Mutation {
  createUser(input: CreateUserInput!): User
}

将返回包含列出字段的用户。

问题是,我想知道我们刚刚尝试创建的用户是否已经存在。那么如何编辑响应以包含此标志?你能有一个突变返回,比如说,一个像这样的对象:

{
  exists: true,
  user: { ... }
}

所以我可以这样做:

this.props.submit({
  variables: {
    email,
    permissions,
  },
}).then(({ result }) => {
  console.log(result)
  // > { exists: true, user: [USER OBJECT] }
})

我知道这会破坏自动缓存更新,但有时您需要更新的响应来告诉您更多信息。

最佳答案

为变异的返回结果创建一个附加类型

type UserPayLoad {
exists:Boolean
user:User
}

extend type Mutation {
  createUser(input: CreateUserInput!): UserPayLoad
}

试试这个。这可能对你有帮助

关于graphql - Apollo Mutation 可以返回自定义结果对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46584049/

相关文章:

graphql - 有没有办法通过查询自省(introspection)来读取类型上的 GraphQL 指令?

graphql - 您可以将 graphql 类型设为输入和输出类型吗?

apollo - 使用 client.readFragment() 从 Apollo 缓存中读取片段

javascript - React - 错误 : App(. ..) : Nothing was returned from render. 这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null

javascript - fetchPolicy 选项 : "no-cache" does not work in useQuery

graphql - 返回突变结果

javascript - CraftCMS Gatsby 项目抛出错误 "GraphQL Error Expected type [String], found {eq: $slug}."

javascript - 如何解决无限 Javascript promise ?

graphql - 为什么每个 GraphQL 查询/变异都有 "two names"?

python - 如何使用 graphene-file-upload 和 apollo-upload-client 将 graphql 中的文件上传到 Python 数据库并在前端使用react。