Nestjs GraphQL查询未运行[重复]

Posted

技术标签:

【中文标题】Nestjs GraphQL查询未运行[重复]【英文标题】:Nestjs GraphQL query not running [duplicate] 【发布时间】:2019-07-05 11:06:27 【问题描述】:

我有以下架构:

type User 
  id: String!
  email: String


type Mutation 
  createUser(input: CreateUserDto!): CreateUserResponseDto!


type Query 
  user(id: Int!): User


input CreateUserDto 
  email: String!
  password: String!


type CreateUserResponseDto 
  id: String!

我有以下解析器:

import Args, Mutation, Resolver from '@nestjs/graphql';
import UserService from '../service/user.service';
import CreateUserDto, CreateUserResponseDto, UserDto from '../controller/dto/user.dto';
import Query from '@nestjs/common';

@Resolver('User')
export class UserResolver 

  constructor(private readonly userService: UserService) 
  

  @Mutation()
  async createUser(@Args('input') userDto: CreateUserDto): Promise<CreateUserResponseDto> 
    const userEntity = await this.userService.createUser(userDto);

    return 
      id: userEntity.id,
    ;
  

  @Query('user')
  async getUser(@Args('id') id: number): Promise<UserDto> 
    const userEntity = await this.userService.findUserById(id);

    return 
      id: userEntity.id,
      email: userEntity.email,
    ;
  

运行以下查询时:


  user(id: 2) 
    email
  

我收到以下回复:


  "data": 
    "user": null
  

当尝试调试时,调用似乎永远不会到达解析器。

当尝试运行突变时,一切都按预期工作。

我错过了什么?

【问题讨论】:

【参考方案1】:

您使用了错误的 Query 装饰器。您已从 @nestjs/common 而不是 @nestjs/graphql 导入它。

令人困惑的是它们都具有相同的名称,如果您使用 IDE 自动为您修复导入,则可能会引入错误的名称。

【讨论】:

以上是关于Nestjs GraphQL查询未运行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL介绍&使用nestjs构建GraphQL查询服务

elastic APM 和 NestJS 不区分 graphql 查询

使用@nestjs/graphql 使用@ResolveProperty 和@Resolvers 创建嵌套查询

Nestjs - Mongoose - 虚拟字段 - 无法在 graphql 操场上查询

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

基于typescript 强大的 nestjs 框架试用