TypeORM Apollo распознаватель вложенных запросов - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть схема (с соответствующими таблицами базы данных и определенными классами сущностей), например

type User {
    id: Int!
    phoneNumber: String!
}

type Event {
    id: Int!
    host: User
  }

и я пытаюсь использовать Apollo для написания запроса типа

Query{
  event(id:1){
    host{
      firstName
    }
  }
}

Но я не могу понять, как заставить библиотеку Apollo разрешить тип пользователя в поле хоста в hostId, который хранится в объекте события.

Я изменил событие, чтобы оно возвращало поле hostId, и оно прекрасно работает, но Graphql не разрешит идентификатор для соответствующего типа пользователя. Чего мне не хватает?

edit: отсутствует код резольвера

event: async (parent: any, args: { id: number }) => {
      const eventRepository = getConnection().getRepository(Event);
      const event = await eventRepository.findOne(args.id);
      return event;
    },

Мне удалось получить рабочую версию с помощью findOne(args.id, { relations: ['host']}), но мне это не нравится, потому что это похоже на то, что было бы целесообразно делегировать в Graphql для обработки.

1 Ответ

2 голосов
/ 15 мая 2019

Ваш распознаватель должен быть таким

const resolver = {

Query: {
    event: async (_: any, args: any) => {
      return await event.findOne(args.id);
    }
  },
  event: {
    host: async (parent: any, args: any, context: any) => {
      return await user.find({ id: parent.id });
    }
  }
};
...