Apollo突变可以返回一个自定义结果对象吗?
问题描述:
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
}
刚刚尝试这一点额外的类型。这可能会帮助你