3. GraphQL 参数
3m
你当前正在使用本课程的较旧版本。 查看课程变更日志.

查询特定轨道

我们使用新的内容更新了架构模块类型,但仍需要一种方法按 ID 特定轨道。为此,我们需要在架构中添加另一个输入点。

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

在架构的 查询类型中添加以下

track: Track
我们在哪里可以为 Schema 添加入口点?

我们将能够指定哪个唯一的轨道我们通过给这个一个参数

🤔如何使用 GraphQL 参数

一个是您为特定在您的。Schema 定义每个字段接受的参数。

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

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。该字段使用不可为 null 的ID类型的id参数,并返回一个可为 null 的SpaceCat。2) 查询missions的列表。该字段具有两个参数:可为 null 的String类型的to(指定任务目的地),以及可为 null 的Boolean类型的scheduled(用于过滤已安排或未安排的任务)。此字段返回可为 null 的Missions的、可为 null 的数组。

关于定义就是这样。现在,我们将模式更新为我们正在实施的功能。接下来是

上一个

分享你的问题和对此课程的评论

你的反馈有助于我们改进!如果你遇到了困难或感到困惑,请告诉我们,我们会帮助你的。所有评论都是公开的,必须遵循 Apollo 行为准则。请注意,已解决或已答复的评论可能会被删除。

你将需要一个 GitHub 帐户才能在下面发帖。还没有吗? 改为在我们的 Odyssey 论坛发帖。