3. 将突变添加到我们的模式中
2m

✍️ 更新我们的模式

为了添加一个,让我们去我们的server/src文件夹中的schema.js文件。

我们将从type关键字开始,然后是Mutation,后面跟着大括号。

type Mutation {
}

incrementTrackViews(id: ID!)

让我们为我们对 的响应创建一个新类型。按照约定,我们将 IncrementTrackViews)与我们自己的 Response 结合起来。

type IncrementTrackViewsResponse {
}

此类将包含我们之前提到的三个

  • code(一个不可空的 Int
  • success(一个不可空的 Boolean
  • 以及 message(一个不可空的 String

最后,我们将添加被修改的对象。在我们的案例中,我们只有一个: track 的类型为 Track。注意 track 可以是 null,因为我们的 可能会失败。

此外,我们还需为每个 添加注释,以便让我们的 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
在 mutation 响应类型(IncrementTrackViewsResponse)中,为什么修改的对象的返回类型是可空的(track: Track)?

最后,我们可以将我们的 的返回类型设置为此新 IncrementTrackViewsResponse 类型,并使其不可空。以下是 nowincrementTrackViews 应现在看起来像:

server/src/schema.js
type Mutation {
incrementTrackViews(id: ID!): IncrementTrackViewsResponse!
}
代码挑战!

向现有模式添加一个 mutation。该 mutation 应将一艘太空船分配给一个特定的任务。应称为 assignSpaceship。它接受两个必填参数:一个 spaceshipId,类型为 ID!,以及一个 missionId,类型为 ID!。它应返回一个不可空的类型 AssignSpaceshipResponse。此返回类型应返回前面讨论的三项信息属性,以及相应的返回类型的可空 spaceshipmission 字段。

现在我们的架构已经配置妥当,接下来让我们确定需要使用哪些端点来更新我们的数据。

上一页

分享您对本课程的问题和评论

您的意见有助于我们改进!如果您遇到困难或感到困惑,请告诉我们,我们将为您提供帮助。所有评论均为公开,必须遵守 Apollo行为准则。注意,已解决或处理过的评论可能会被删除。

在下方发表评论需要GitHub账户。您没有账户吗? 请在我们的Odyssey论坛上发布评论。