❓ 查询特定曲目
我们已使用新的字段 和 Module
类型更新了我们的模式,但我们仍然需要一种方法来 查询 特定曲目及其 ID。为此,我们需要在模式中添加另一个入口点。
在 schema.js
文件中,位于 server/src
文件夹中,我们可以看到到目前为止我们的 API 只有一个入口点:tracksForHome
字段,它返回 Track
对象的列表。让我们添加另一个名为 track
的入口点,它将返回单个 Track
。
在模式的 字段 中添加以下 Query
类型:
track: Track
我们将能够指定 哪个 唯一的曲目我们正在 查询,方法是为这个 字段 提供一个 参数。
🤔 如何使用 GraphQL 参数
一个 参数 是您为查询中的特定 字段 提供的值。模式定义了每个字段接受的参数。
您的 解析器 然后可以使用 字段 的提供的 参数 来帮助确定如何填充该字段的数据。参数可以帮助您检索特定对象、过滤一组对象,甚至转换字段的返回值。执行搜索的 查询 通常会将用户提交的搜索词作为参数提供。
要为模式中的 字段 定义一个 参数,我们在字段名称后面添加括号。在括号内,我们写下参数的名称,后面跟着一个冒号,然后是该参数的类型,例如 String
或 Int
。如果我们有多个 参数,我们可以用逗号分隔它们。
🙌 使用参数
在本例中,我们希望使用轨道的 ID 作为我们的 参数。按照语法规则,我们将添加括号,然后是名称 id
,类型为 ID
,这是必需的。
在 Query
类型中,位于 schema.js
文件中,更新 track
字段 如下:
"Fetch a specific track, provided a track's ID"track(id: ID!): Track
更新下面的模式以添加两个新的入口点:1) 查询特定 spacecat
。此字段接受类型为非空 ID
的参数 id
,并返回可空 SpaceCat
。2) 查询 missions
列表。此字段接受两个参数:to
,类型为可空 String
(指定任务目的地),以及 scheduled
,类型为可空 Boolean
(过滤已安排或未安排的任务)。此字段返回可空 Mission
的可空数组。
这就是 查询 定义的全部内容。我们现在已将模式更新到我们正在实施的功能。继续进行 解析器!
分享您关于本课的疑问和评论
您的反馈将帮助我们改进!如果您卡住或困惑,请告诉我们,我们会帮助您解决。所有评论都是公开的,必须遵守 Apollo 行为准则。请注意,已解决或已处理的评论可能会被删除。
您需要一个 GitHub 帐户才能在下面发布。没有帐户? 请在我们的 Odyssey 论坛中发布。