Запрос FeathersJS в методе find фильтрует объединенные объекты - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть 2 услуги, книга и автор .Эти сервисы потребляют данные с другого сервера API.У книги есть идентификатор автора.В методе книжного обслуживания find я использую хук fastjoin с пакетным загрузчиком, чтобы соединить книгу с его автором в одном и том же объекте, например:

const postResolvers = {
  before: context => {
    context._loaders = { author: {} };
    context._loaders.author.id = loaderFactory(context.app.service('authors'), '_id', false, { paginate: false })(context);
  },
  joins: {
    author: () => async (book, context) => {
      book.author = await context._loaders.author.id.load(book.user_id);
    }
  }
};

Затем в хуке после поискаЯ звоню в fastjoin: after { find: [fastjoin(postresolver)], ...

Проблема в том, что мне нужно фильтровать авторов тоже в запросе книги, поэтому правильный запрос для поиска книги может содержать авторские поля, например:

{ query: { book_year: 1990, author_name: 'Jhon' } }

Пока что я разделяю поля запроса автора на другой запрос, который я помещаю в параметры ловушки, поэтому запрос книги содержит только поля книги, а в другом параметре я задаю запрос автора.Я не знаю, как включить этот запрос автора в поиск, который выполняет пакетный загрузчик.Есть ли другое решение, которое не включает в себя пакетный загрузчик?Я что-то упустил?

...