Вложенный решатель полей не вызывается

#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 тип, а затем определить поле здесь. Более подробная информация здесь .