✍️ 更新我们的模式
为了添加一个突变,让我们去我们的server/src
文件夹中的schema.js
文件。
我们将从type
关键字开始,然后是Mutation
,后面跟着大括号。
type Mutation {}
incrementTrackViews(id: ID!)
让我们为我们对 mutation 的响应创建一个新类型。按照约定,我们将 IncrementTrackViews
)与我们自己的 Response
结合起来。
type IncrementTrackViewsResponse {}
此类将包含我们之前提到的三个 字段:
code
(一个不可空的Int
)success
(一个不可空的Boolean
)- 以及
message
(一个不可空的String
)
最后,我们将添加被修改的对象。在我们的案例中,我们只有一个: track
的类型为 Track
。注意 track
可以是 null,因为我们的 mutation 可能会失败。
此外,我们还需为每个 字段 添加注释,以便让我们的 GraphQL API 文档更有用。
"Similar to HTTP status code, represents the status of the mutation"code: Int!"Indicates whether the mutation was successful"success: Boolean!"Human-readable message for the UI"message: String!"Newly updated track after a successful mutation"track: Track
IncrementTrackViewsResponse
)中,为什么修改的对象的返回类型是可空的(track: Track
)?最后,我们可以将我们的 mutation 的返回类型设置为此新 IncrementTrackViewsResponse
类型,并使其不可空。以下是 nowincrementTrackViews
mutation 应现在看起来像:
type Mutation {incrementTrackViews(id: ID!): IncrementTrackViewsResponse!}
向现有模式添加一个 mutation。该 mutation 应将一艘太空船分配给一个特定的任务。应称为 assignSpaceship
。它接受两个必填参数:一个 spaceshipId
,类型为 ID!
,以及一个 missionId
,类型为 ID!
。它应返回一个不可空的类型 AssignSpaceshipResponse
。此返回类型应返回前面讨论的三项信息属性,以及相应的返回类型的可空 spaceship
和 mission
字段。
现在我们的架构已经配置妥当,接下来让我们确定需要使用哪些端点来更新我们的数据。
分享您对本课程的问题和评论
您的意见有助于我们改进!如果您遇到困难或感到困惑,请告诉我们,我们将为您提供帮助。所有评论均为公开,必须遵守 Apollo行为准则。注意,已解决或处理过的评论可能会被删除。
在下方发表评论需要GitHub账户。您没有账户吗? 请在我们的Odyssey论坛上发布评论。