3. GraphQL 参数
3m

查询特定曲目

我们已使用新的Module 类型更新了我们的模式,但我们仍然需要一种方法来 特定曲目及其 ID。为此,我们需要在模式中添加另一个入口点。

schema.js 文件中,位于 server/src 文件夹中,我们可以看到到目前为止我们的 API 只有一个入口点:tracksForHome ,它返回 Track 对象的列表。让我们添加另一个名为 track 的入口点,它将返回单个 Track

在模式的 中添加以下 Query 类型:

track: Track
我们在哪里可以添加模式的入口点?

我们将能够指定 哪个 唯一的曲目我们正在 ,方法是为这个 提供一个 参数

🤔 如何使用 GraphQL 参数

一个 是您为查询中的特定 提供的值。模式定义了每个字段接受的参数。

您的 然后可以使用 的提供的 来帮助确定如何填充该字段的数据。参数可以帮助您检索特定对象、过滤一组对象,甚至转换字段的返回值。执行搜索的 通常会将用户提交的搜索词作为参数提供。

Doodle of resolver function retrieving a specific object from data-land using an argument

要为模式中的 定义一个 ,我们在字段名称后面添加括号。在括号内,我们写下参数的名称,后面跟着一个冒号,然后是该参数的类型,例如 StringInt。如果我们有多个 ,我们可以用逗号分隔它们。

Illustration showing the syntax breakdown of using GraphQL arguments
以下是使用查询中的参数的原因:

🙌 使用参数

在本例中,我们希望使用轨道的 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 论坛中发布。