gpt4 book ai didi

graphql - 无法将类型 'object' 用于 Type-GraphQL 字段类型

转载 作者:行者123 更新时间:2023-12-02 16:23:50 24 4
gpt4 key购买 nike

我想为我的 NestJs API 创建一个 GraphQL 层。所以基于这个接口(interface)持有一个键/值对

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: You need to provide explicit type for MappingDTO#value !

当改变类型时,例如到 string 启动时不会抛出任何错误。问题是我无法指定显式类型,因为我的 MongoDB 存储包含“任何内容”的对象。

如何修复解析器或 DTO 来处理对象类型?

<小时/>

编辑:

解析器装饰器也是如此。当我有这个时

  @Query(() => Object)
public async getValueByKey(@Args('id') id: string): Promise<object> {
return this.mappingsService.getValueByKey(id);
}

我收到此错误

Error: Cannot determine GraphQL output type for getValueByKey

最佳答案

听起来您应该使用自定义 JSON 标量。喜欢this one .

import { GraphQLJSONObject } from 'graphql-type-json'

这可以直接在字段装饰器中使用:

@Field(() => GraphQLJSONObject)
value: object

或者您可以将装饰器保留为@Field(),并将适当的scalarsMap添加到传递给buildSchema的选项中。请参阅the docs了解更多详细信息。

关于graphql - 无法将类型 'object' 用于 Type-GraphQL 字段类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60205466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com