我的所有突变都返回一个包装负载类型,而不是一个单一的值类型(例如。
Post
在您的情况下),我也不会抛出GraphQL,除非它是一个真正的系统错误——如果这是用户输入的结果,或者是其他预期的情况,我将其建模为返回类型。
返回包装负载通常被认为是最佳实践,因为a)您的突变应该返回
每件事
在可能已更改的图中(不仅仅是新帖子)和b),它使您能够在以后向返回类型添加新字段。
记住,突变本质上是一个函数,它接收一些输入数据和当前图形,并返回一个新的图形。It's generally a mistake to think in terms of REST-like CRUD operations.
type CreatePostError = {
// Whatever you want
}
type CreatePostSuccess = {
post: Post!
warning: String
}
union CreatePostPayload = CreatePostSuccess | CreatePostError
mutation {
// Other mutations
createPost(/* args /*): CreatePostPayload
}