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

Posted

技术标签:

【中文标题】Apollo Mutation 可以返回自定义结果对象吗?【英文标题】:Can an Apollo Mutation return a custom result object? 【发布时间】:2018-03-16 23:30:58 【问题描述】:

从 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] 
)

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

【问题讨论】:

【参考方案1】:

为变异的返回结果创建一个额外的类型

type UserPayLoad 
exists:Boolean
user:User


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

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

【讨论】:

以上是关于Apollo Mutation 可以返回自定义结果对象吗?的主要内容,如果未能解决你的问题,请参考以下文章

自定义输入类型的 Apollo 数组作为 Mutation 参数抛出“__typename”:未知字段错误

Apollo 中 Query 和 Mutation 的区别?

React-Apollo Mutation 返回空响应

返回突变结果的正确方法? (GraphQL 与 Apollo 和 Mongoose

React Apollo GraphQL Mutation 返回 400(错误请求)

Apollo GraphQL“不能为不可为空的字段 Mutation.createUser 返回 null”