【问题标题】:Can an Apollo Mutation return a custom result object?Apollo Mutation 可以返回自定义结果对象吗?
【发布时间】: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] }
})

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

【问题讨论】:

    标签: graphql apollo react-apollo


    【解决方案1】:

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

    type UserPayLoad {
    exists:Boolean
    user:User
    }
    
    extend type Mutation {
      createUser(input: CreateUserInput!): UserPayLoad
    }
    

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

    【讨论】:

      猜你喜欢
      • 2018-06-06
      • 1970-01-01
      • 2019-01-26
      • 2018-10-22
      • 2017-08-26
      • 1970-01-01
      • 2019-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多