嵌套错误:无法确定getProducts的GraphQL输出类型

嵌套错误:无法确定getProducts的GraphQL输出类型,graphql,nestjs,typeorm,Graphql,Nestjs,Typeorm,当我试图从解析程序返回自定义dto时,会出现此错误(节点:28156)未处理的PromisejectionWarning:错误:无法确定getProducts的GraphQL输出类型 下面是我的代码的样子 product.entity.ts import { Entity, Column, PrimaryGeneratedColumn, BaseEntity, BeforeInsert, } from 'typeorm'; import { ObjectType, Field

当我试图从解析程序返回自定义dto时,会出现此错误<代码>(节点:28156)未处理的PromisejectionWarning:错误:无法确定getProducts的GraphQL输出类型

下面是我的代码的样子

product.entity.ts

import {
  Entity,
  Column,
  PrimaryGeneratedColumn,
  BaseEntity,
  BeforeInsert,
} from 'typeorm';
import { ObjectType, Field, ID, Float, Int } from '@nestjs/graphql';

@ObjectType()
@Entity()
export class Product extends BaseEntity {
  @Field(() => ID)
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @Column({ default: '', select: false })
  ratingsString: string;

  @Field(() => [Int])
  ratings;

  @BeforeInsert()
  setRatingsString() {
    this.ratingsString = this.ratings.join(',');
  }
}

product.resolver.ts

import { Resolver, Query, Args, ResolveField, Int, Parent } from '@nestjs/graphql';

import { Product } from './product.entity';
import { ProductService } from './product.service';

@Resolver(() => Product)
export class ProductResolver {
  constructor(private productService: ProductService) {}

  @Query(() => GetProductDto, { name: 'products' })
  async getProducts(@Args() page: number) {
    return this.productService.getProducts(page);
  }
}

产品服务

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';

import { Product } from './product.entity';
import { GetProductDto } from './product.dto';

@Injectable()
export class ProductService {
  constructor(
    @InjectRepository(Product) private productRepo: Repository<Product>,
  ) {}

  async getProducts(page: number): Promise<GetProductDto> {
    const MAX_PRODUCT_PER_PAGE = 20;
    const start = page < 1 ? 1 : page;

    const [products, productsCount] = await this.productRepo.findAndCount({
      skip: (start - 1) * MAX_PRODUCT_PER_PAGE,
      take: MAX_PRODUCT_PER_PAGE,
    });

    const productList = products.map(product => {
      product.ratings = product.ratingsString.split(',').map(Number);
      delete product.ratingsString;
      return product;
    });

    return {
      products: productList,
      total: productsCount,
    };
  }
}


这里的期望是,当我调用products查询时,我将收到一个包含products和total的对象。Whee产品将是我的一系列产品。我做错了什么?

结果证明我所需要的只是向Args提供一个参数

  @Query(() => GetProductDto, { name: 'products' })
  async getProducts(@Args('arg_the_client_will_it_with') page: number) {
    return this.productService.getProducts(page);
  }

结果我只需要给Args提供一个参数

  @Query(() => GetProductDto, { name: 'products' })
  async getProducts(@Args('arg_the_client_will_it_with') page: number) {
    return this.productService.getProducts(page);
  }