Я хотел бы создать слой GraphQL для моего API Nest Js. Поэтому на основе этого интерфейса, содержащего пары ключ / значение
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 #!
При изменении типа, например, на string
ошибка не возникает при запуске. Дело в том, что я не могу указать явный тип, потому что мой MongoDB хранит объекты, содержащие «что-нибудь».
Как я могу исправить свой преобразователь или DTO для работы с типом объекта?
Редактировать:
То же самое для декоратора резольвера. Когда у меня есть это
@Query(() => Object)
public async getValueByKey(@Args('id') id: string): Promise<object> {
return this.mappingsService.getValueByKey(id);
}
Я получаю эту ошибку
Ошибка: невозможно определить тип вывода GraphQL для getValueByKey