0

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

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

  1. 我可以使用标准的“查找”查询,只需在所有钩子中编写 if 语句来检查可以在客户端传递的特定字符串参数,因此这些钩子在此特定调用中被停用,但这似乎很乏味,特别是如果我发现这个需要已经构建的其他几个不同的服务。

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

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

    我在下面写:

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

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

有比这些选项更好的解决方案吗?还是选项 1 或选项 2 是解决我当前问题的最正确方法?

4

1 回答 1

1

您始终可以将人口挂钩包装到条件挂钩中:

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

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

params.populate现在,如果不是,则人口只会运行false

于 2016-11-23T17:38:06.293 回答