У меня есть 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' } }
Пока что я разделяю поля запроса автора на другой запрос, который я помещаю в параметры ловушки, поэтому запрос книги содержит только поля книги, а в другом параметре я задаю запрос автора.Я не знаю, как включить этот запрос автора в поиск, который выполняет пакетный загрузчик.Есть ли другое решение, которое не включает в себя пакетный загрузчик?Я что-то упустил?