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 
} 

刚刚尝试这一点额外的类型。这可能会帮助你