[英]Nestjs GraphQL Apollo Federation - resolver has an object in debug, returns an object with nulls
我正在使用 NestJs、GraphQL apollo federation(模式优先方法)和 ZCCADCDEDB567ABAE643E15DCF0974E503Z。
查询product
或products
解析器时,查询返回 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.