用户登录

我想在 User 类型里再添加一个字段,它的值是用户的 name 小横线,再加上用户的 id 字段的值。在 Resolver 里面可以定义一些 ResolveProperty。

添加一个方法,名字叫 nameDashId ,这个方法的名字可以作为 User 类型里的一个字段的名字。这个方法用 @ResolveProperty 装饰一下。在这个装饰器里可以配置一下添加的 User 类型的字段的名字,如果不单独配置,字段的名字跟下面这个方法的名字是一样的。这里需要再给它提供一个函数参数,函数 return 的是字段值的类型,这里是 String。

在这个方法里面,可以得到查询出来的 User 数据的值,用一下 @Parent 这个装饰器,把 User 数据交给一个叫 user 的参数,类型是 User 。

方法 return 的东西,可以用一个字段模板,里面先添加一个 user.name ,小横线,再添加一个 user.id 。 保存一下文件,打开自动生成的 GraphQL Schema 观察一下。现在,User 这个类型里面,有一个 nameDashId 字段,类型是 String。

测试

回到 GraphQL Playground 测试一下,可以查询一个用户,这个 user 字段返回的东西是个 User 数据,现在这个类型里面有一个 nameDashId 字段,如果需要的话可以把它添加到这里。执行一下这个查询,你会发现,服务器响应回来的是一个 User 数据,里面会出现一个 nameDashId 字段,它的值就是用户名小横线,再加上用户的 ID 号。

在这个查询里面的根,是这个 user 字段,这个查询交给 GraphQL 服务器处理之后,会执行 user 字段对应的 Resolver,在我们这里,就是 UserResolver 里的 getUser 这个方法。

这个方法会返回一个 User 数据,GraphQL 会继续解析其它的字段,比如 id,还有 name ,直接返回了它们的值,解析到 nameDashId 字段的时候,执行了它的 Resolver,这里就是这个 nameDashId 方法,因为之前 Resolve user 字段的时候,得到了 User 数据,这个数据,在这个 nameDashId 方法里面,可以通过 user 参数得到。在方法里面,就是简单的利用了一下 User 数据里的 name 还有 id 的值,返回了一个字符串。

字段解析器(ResolveProperty)《 企业应用架构:GraphQL 》

统计

12489
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点