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

Javascript 如何使用feathers.js避免服务在钩子中多次运行?,javascript,node.js,feathersjs,feathers-hook,feathers-service,Javascript,Node.js,Feathersjs,Feathers Hook,Feathers Service,我在feathers hook的feathers服务中遇到了问题。问题是我在feather hook中使用feather服务,当我调用hook中的服务时,它会运行多次,这样内存问题就会发生。我的问题是如何避免服务多个运行钩子 function orders(hook){ return new Promise((resolve,reject) =>{ hook.app.service('orders') .find(hook.app.query)

我在feathers hook的feathers服务中遇到了问题。问题是我在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);
      }
    }
  }
});

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

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

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

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