✍️ 更新我们的模式
为了添加一个突变,让我们去我们的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论坛上发布评论。