❓ 查询特定曲目
我们已使用新的字段 和 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 论坛中发布。