如何使用 feathers.js 避免在挂钩中多次服务 运行?

How to avoid service multiple time run in hook using feathers.js?

我在羽毛挂钩的羽毛服务中遇到问题。确切的问题是我在 feather hook 中使用 feather 服务,当我在 hook 中多次调用服务 运行 时,就会发生内存问题。我的问题是如何避免钩子中的服务多个运行。

function orders(hook){
  return new Promise((resolve,reject) =>{
      hook.app.service('orders')
        .find(hook.app.query)
        .then(result => {
          resolve(result.data)
        }).catch(e =>{
        reject(e)
      })
  })
}

我预期的解决方案是服务应该 运行 挂机一次。

理想情况下,服务方法不应在挂钩中调用自身,但如果这样做,您将需要一个中断条件,以便它不会在无限循环中不断调用自身。这可以通过例如传递将跳过自引用调用的参数(如果未设置):

app.service('myservice').hooks({
  before: {
    find(hook) {
      if(!hook.params.fromOtherHook) {

        const newParams = Object.assign({
          fromOtherHook: true
        }, hook.params);

        return hook.service.find(newParams);
      }
    }
  }
});