【发布时间】:2020-05-29 00:31:24
【问题描述】:
我想为我的 NestJs API 创建一个 GraphQL 层。所以基于这个接口持有一个键/值对
export interface Mapping {
id: string;
value: object;
}
我创建了一个 DTO 作为 GraphQL 查询的返回类型
@ObjectType()
export class MappingDTO {
@Field(() => ID)
id: string;
@Field()
value: object;
}
所以当我想找到所有映射时,我会想出这个
@Query(() => [MappingDTO])
public async mappings(): Promise<Mapping[]> {
return this.mappingsService.getMappings();
}
很遗憾,我不能将object 用于值字段。我收到此错误
NoExplicitTypeError:您需要为 MappingDTO#value !
当改变类型时,例如到string 启动时不会抛出任何错误。问题是我无法指定显式类型,因为我的 MongoDB 存储了持有“任何东西”的对象。
如何修复我的解析器或 DTO 以处理对象类型?
编辑:
解析器装饰器也是如此。当我有这个
@Query(() => Object)
public async getValueByKey(@Args('id') id: string): Promise<object> {
return this.mappingsService.getValueByKey(id);
}
我收到此错误
错误:无法确定 getValueByKey 的 GraphQL 输出类型
【问题讨论】:
标签: graphql nestjs typegraphql