Graphql 阿波罗变异能否返回自定义结果对象?

Graphql 阿波罗变异能否返回自定义结果对象?,graphql,apollo,react-apollo,Graphql,Apollo,React Apollo,Apollo突变返回的结果通常是某个类型或某个类型字段的子集,这通常非常好。所以我的突变: const addUserMutation = gql` mutation createUser($email: String!, $permissions: [CreatePermissionInput]) { createUser(input: {email: $email, permissions: $permissions}) { id created

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
}
将返回包含所列字段的用户

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

所以我可以这样做:


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

为突变的返回结果创建其他类型

type UserPayLoad {
exists:Boolean
user:User
}

extend type Mutation {
  createUser(input: CreateUserInput!): UserPayLoad
}
试试这个。这可能对你有帮助

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
}