繁体   English   中英

Nestjs GraphQL Apollo Federation - 解析器在调试中有一个 object,返回一个带有空值的 object

[英]Nestjs GraphQL Apollo Federation - resolver has an object in debug, returns an object with nulls

我正在使用 NestJs、GraphQL apollo federation(模式优先方法)和 ZCCADCDEDB567ABAE643E15DCF0974E503Z。

查询productproducts解析器时,查询返回 object,其中所有属性均为空值。

但是,当我在我的服务/解析器中调试和使用断点时,我可以看到这些函数正在返回正确的 mongo 文档。

文件代码片段:

{
  "data": {
    "product": {
      "id": null,
      "name": null
    }
  }
}
// product.graphql
type Product {
  id: String
  name: String
  displayName: String
  productId: Int
  partnerId: String
}

type Query {
  product(id: String): Product
  products: [Product]
}
// product.model.ts
@MongooseSchema()
export class ProductDocument extends Document implements Product {
  @Prop({ type: mongoose.Types.ObjectId })
  @Transform((value) => value.toString())
  _id: string;

  @Prop({ type: mongoose.Types.ObjectId })
  @Transform((value) => value.toString())
  id: string;

  @Prop()
  displayName: string;

  @Prop()
  name: string;

  @Prop()
  productId: number;

  @Prop({ type: mongoose.Types.ObjectId })
  @Transform((value) => value.toString())
  partnerId: string;
}
// products.resolvers.ts
import { Args, Query, Resolver, ResolveReference } from '@nestjs/graphql';
import { ProductsService } from './products.service';

@Resolver('Product')
export class ProductsResolvers {
  constructor(private productsService: ProductsService) {}

  @Query()
  async product(@Args('id') id: string) {
    const data = await this.productsService.findById(id);
    return data;
  }

  @Query()
  async products() {
    const res = await this.productsService.find();
    return res;
  }

  @ResolveReference()
  resolveReference(reference: { __typename: string; id: string }) {
    return this.productsService.findById(reference.id);
  }
}
// auto generated graphql.ts
export interface Product {
    id?: string;
    name?: string;
    displayName?: string;
    productId?: number;
    partnerId?: string;
}

export interface IQuery {
    product(id?: string): Product | Promise<Product>;
    products(): Product[] | Promise<Product[]>;
}

简而言之,我有两个拦截器改变了响应并破坏了 GraphQL API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM