使用输入和枚举类型
利用输入类型,我们提高了传递给变更参数的复用性,同时也不容易出错。当把输入类型和枚举类型结合起来时,我们可以更具体地说明可以提供给特定字段的输入类型。输入类型和枚举类型非常好用,结合在一起使用更能起到事半功倍的效果。
- 用新的输入类型运行变更
还需要在Query Variables面板中发送相应的JSON:
如果并未提供category字段,则默认为PORTRAIT。或者说,如果我们提供了category值,那么它将在操作发送到服务器之前进行枚举类型验证。如果有效,则将其作为参数传递给解析器。
- 一对多连接
因为连接是使用对象类型的字段创建的,所以它们可以映射到解析器函数。在这些函数中,我们可以利用parent参数来确定并返回连接的数据。
- 多对多连接
GraphQL不要求数据模型和schema中的类型精确匹配。
自定义标量
GraphQL有其默认的标量类型,可用于任何字段。像Int、Float、String、Boolean和ID这样的标量适用于大多数情况,但也确实存在需要创建自定义标量类型来满足数据要求的情况。
自定义DateTime标量添加到我们的typeDefs中,并在创建字段的Photo类型中使用它。created字段用于存储特定照片的发布日期和时间:
schema中的每个字段都需要映射到一个解析器。自定义的类型当然也需要映射到DateTime类型解析器。我们为DateTime创建了一个自定义标量类型,因为我们想要解析和验证使用此标量作为JavaScript Date类型的任何字段。
因为以字符串来表示日期和时间的格式很多。比如下面这些字符串都代表了有效日期:●“4/18/2018”●“4/18/20181:30:00 PM” ●“Sun Apr 15201812:10:17 GMT-0700(PDT)” ●“2018-04-15T19:09:57.308Z” 我们可以使用这些字符串中的任何一个来创建datetime对象:
我们使用GraphQLScalarType对象为定制标量创建解析器