❓ 查询特定轨道
我们使用新的内容更新了架构字段和 模块
类型,但仍需要一种方法按 ID 查询特定轨道。为此,我们需要在架构中添加另一个输入点。
在 schema.js
文件中的 server/src
文件夹中,我们可以看到到目前为止,我们只有一个 API 输入点:返回 Track
对象列表的 tracksForHome
字段。让我们添加另一个名为 track
的输入点,这将返回单个 Track
。
在架构的 查询
类型中添加以下 字段:
track: Track
我们将能够指定哪个唯一的轨道我们查询通过给这个领域一个参数。
🤔如何使用 GraphQL 参数
一个参数是您为特定领域在您的查询。Schema 定义每个字段接受的参数。
你的解析器然后可以使用领域提供的参数帮助确定如何填充该字段的数据。参数可以帮助您检索特定对象,过滤一组对象,甚至转换字段的返回值。一个查询执行搜索通常会提供用户的搜索词作为参数。
要为模式中的字段定义参数,我们可以在字段名称后添加括号。括号内,我们按照参数名称后加冒号、然后是参数类型的方式编写,例如String
或Int
。如果有多个参数,我们可以用逗号隔开它们。
🙌 使用参数
在我们的案例中,我们希望使用轨道的 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 的Mission
s的、可为 null 的数组。
关于查询定义就是这样。现在,我们将模式更新为我们正在实施的功能。接下来是解析器!
分享你的问题和对此课程的评论
你的反馈有助于我们改进!如果你遇到了困难或感到困惑,请告诉我们,我们会帮助你的。所有评论都是公开的,必须遵循 Apollo 行为准则。请注意,已解决或已答复的评论可能会被删除。
你将需要一个 GitHub 帐户才能在下面发帖。还没有吗? 改为在我们的 Odyssey 论坛发帖。