阿波罗突变可以返回自定义结果对象吗?



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

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
}

尝试一下。这可能会帮助您

最新更新