我有2个服务,书和作者。这些服务使用来自其他api服务器的数据。一本书有一个作者ID。
在图书服务的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' } }
到目前为止,我将author的查询字段分为另一个查询,然后将它们放入挂钩参数中,因此book查询仅包含book字段,而在其他param中则有author查询。我不知道如何在批处理加载程序的搜索中包括该作者查询。是否有不包含批处理加载器的其他解决方案?我想念什么吗?