查找方法筛选器中的FeathersJS查询联接的实体

时间:2018-12-07 17:25:16

标签: node.js feathersjs feathers-hook

我有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查询。我不知道如何在批处理加载程序的搜索中包括该作者查询。是否有不包含批处理加载器的其他解决方案?我想念什么吗?

0 个答案:

没有答案