Nestjs中多个graphql解析器实现的问题

Posted

技术标签:

【中文标题】Nestjs中多个graphql解析器实现的问题【英文标题】:Problem with multiple graphql resolver implementations in nestjs 【发布时间】:2019-05-27 10:01:55 【问题描述】:

我刚开始学习 NestJS 和 GraphQL。我从UserModule 中定义的单个解析器类UserResolver 开始。此类提供读取用户列表或特定用户的方法。方法用@Query() 装饰,提供user.graphqlfile,GraphQL 在AppModule 中初始化,所有这些都在文档中描述。一切正常,我可以通过 Insomnia Tool 或 Playground 获取用户或特定用户的列表。我很高兴!

现在我创建了第二个模块RoleModule。我创建了一个role.graphql 文件和一个RoleResolver 类,我基本上复制了为User 完成的所有工作,但这次是为RoleRole 类型的 GraphQL 类型定义以及 role.graphql 文件中的查询定义被识别。无法识别的是我在 RoleResolver 类中的 Query() 实现,它们没有被调用。

如果我将所有这些与Role 相关的@Query() 定义放入UserResolver 类中,这些与Role 相关的查询现在会被调用。

这是预期的行为吗?我是否需要将所有 GraphQL 查询定义放到一个类中?是否可以将 NestJS-GraphQL 解析器实现分散到多个模块上?难道我做错了什么?请帮忙。

【问题讨论】:

这对我有用。您是否在模块providers 数组中声明了解析器? @Query('role') 中的名称是否正确?还要确保从@nestjs/graphql 导入Query 并从@nestjs/common 导入not。如果这没有帮助,请提供角色解析器的源代码。 @KimKern:感谢您的帮助。我确实是从@nestjs/common 导入的,这就是问题所在...有时第二双眼睛很有帮助! 【参考方案1】:

确保您从@nestjs/graphql 导入Query不是从@nestjs/common 导入

【讨论】:

以上是关于Nestjs中多个graphql解析器实现的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用graphql的nestJS中的解析器/服务有啥区别?

Nestjs / GraphQL - Playground 为查询返回 Null 错误。我的解析器?

NestJS 5 GraphQL 错误查询在解析器中定义,但不在模式中

Nestjs(graphql)中不同类型的异常处理

NestJS Graphql webpack 生产构建错误

如何在nestjs graphql中实现用户保护