让我们假设我有一个插入新帖子的 createPost
突变 . 在典型的应用程序中,该突变可以:
-
成功,返回
Post
. -
失败,抛出错误(我使用apollo-errors处理此问题) .
我想要实现的是一个中间场景,突变成功(返回 Post
);但也以某种方式向用户返回警告(例如 Your post is similar to post XYZ
或类似的) .
实现这个的好GraphQL模式是什么?将 warning
字段添加到 Post
类型似乎有点奇怪,但是我又不知道如何在同一个突变中返回 Post
和 Warning
?有任何想法吗?
(请注意,我使用此场景作为示例,我对返回额外的突变后数据的一般模式感兴趣,而不是专门找到类似的帖子)
1 回答
我的所有突变都返回一个包装有效负载类型而不是单个值类型(例如
Post
),我也不会发生真正的系统错误 - 如果是用户输入的结果或是其他预期的情况,我将其模型化为返回类型 .返回包装有效负载通常被认为是最佳实践,因为a)您的变异应返回图中可能已更改的所有内容的入口点(不仅仅是新帖子),并且b)它使您能够轻松添加新字段到以后的返回类型 .
请记住,变异本质上是一个函数,它接收一些输入数据和当前图形,并返回一个新图形 . 在类似REST的CRUD操作方面考虑通常是错误的 .