#typescript #graphql #typegraphql
Вопрос:
У меня есть следующий вопрос. Он возвращает данные клиента и список услуг, предоставляемых клиенту. Проблема в том, что я не знаю, как получить описание каждой услуги, предоставляемой клиенту. Любая помощь, дающая мне знать, как настроить @FieldResolver, будет признательна.
query Client($companyId: ID!, $clientId: ID!) {
client(options: { companyId: $companyId, clientId: $clientId }) {
id
companyId
firstName
lastName
clientService {
id
serviceId
sessionBillingRate
service {
description
}
}
}
}
Дочерние данные «ClientService» правильно возвращаются с помощью этого преобразователя полей.
@FieldResolver(() => [ClientService])
async clientService(@Root() client: Client) {
return client.clientServices ? client.clientServices : []
}
Однако, когда я хочу получить описание службы, я не знаю, как настроить @FieldResolver. В настоящее время я делаю следующее, но это не называется. Я думаю, потому что это «на два уровня глубже», что означает, что это дочернее предприятие клиентской службы, а не дочернее предприятие клиента.
@FieldResolver(() => Service)
async service(
@Root() clientService: ClientService,
@Ctx() { serviceLoader }: MyContext
): Promise<Service> {
debugger
return (await serviceLoader.load(clientService.serviceId))!
}
Комментарии:
1. Запрос graphql выглядит нормально. Насколько я могу видеть, вы ввели
FieldResolver(() => Service) async service(...) {...}
Client
распознаватель, поэтому определили поле под названием сервис в объекте клиента . Вы должны переместить его в новыйResolver
класс, который «разрешает»Service
тип, а затем определить поле здесь. Более подробная информация здесь .