Я создал распознаватель GraphQL, который выполняет поиск объектов Компании с помощью TypeORM. Я хотел бы разрешить клиенту (опционально) запрашивать объекты нумерации или нумерации объектов, поэтому я написал этот преобразователь:
@ArgsType()
class CompanyProductArgs {
@Field()
OrderBy?: {
fieldName: string;
direction: DirectionEnum;
};
@Field()
Pagination?: {
take: number;
skip: number;
};
}
@Resolver()
export class CompanyProductResolver {
@Query(() => [CompanyProduct])
companyProducts(@Args() { OrderBy, Pagination }: CompanyProductArgs) {
let args = {};
if (OrderBy) {
args = {
...args,
order: {
[OrderBy.fieldName]: OrderBy.direction,
},
};
}
if (Pagination) {
args = {
...args,
skip: Pagination.skip,
take: Pagination.take,
};
}
return CompanyProduct.find(args);
}
}
Но при запуске это возвращает:
Ошибка: вам необходимо предоставить явный тип для CompanyProductArgs # OrderBy
Способ решить эту проблему будет с помощью пользовательских скейлеров (я думаю, ), но документация типа GraphQL содержит только один пример, в котором принимается только одна переменная, но я хочу принять объект с 2 ключами (в этом случае - take и skip). Как бы я написал скалер, который принимает объект, такой как объект нумерации страниц, как это:
{
take: 10
skip: 5
}