Feathers JS嵌套路由或创建备用服务

时间:2016-11-21 18:18:39

标签: node.js middleware feathersjs

我正在开发的项目使用羽毛JS框架服务器端。许多服务都有挂钩(或中间件),可以在发送回客户端之前进行其他调用并附加数据。如果我有一个新功能需要查询数据库,但只有少数特定的东西,我想我不想使用已建立的“查找”方法进行此数据库查询,因为“查找”方法有很多其他不需要的钩子和对其他数据库的调用来获取我的功能上的这个新查询所不需要的数据。

到目前为止我的两个解决方案:

  1. 我可以使用标准的“查找”查询,只需在所有挂钩中编写if语句,检查可以在客户端传递的特定字符串参数,以便在此特定调用中取消激活这些挂钩但看起来似乎特别是如果我发现需要已经建立的其他几种不同的服务。

  2. 我在主服务下面初始化第二个服务,所以如果我的主要服务是:

    app.use('/comments', new JHService(options));
    
    我正在写下:

    app.use('/comments/allParticipants', new JHService(options));
    

    然后为该服务附加一组全新的挂钩。基本上它是一个全新的服务与唯一的起源关系,因为它的名字的第一部分是'评论'因为我是羽毛的新手,我不确定这是否是一个高性能或最佳的解决方案。

  3. 那些选项有更好的解决方案吗?或选项1或选项2是解决当前问题的最正确方法吗?

1 个答案:

答案 0 :(得分:1)

您始终可以将人口挂钩包装到conditional hook

const hooks = require('feathers-hooks-common');

app.service('myservice').after({
  create: hooks.iff(hook => hook.params.populate !== false, populateEntries)
});

现在只有当params.populate不是false时,人口才会投放。