代码之家  ›  专栏  ›  技术社区  ›  KARTHIKEYAN.A

如何使用Feather避免服务多次磨合。js?

  •  0
  • KARTHIKEYAN.A  · 技术社区  · 8 年前

    我在羽毛钩的羽毛服务中面临问题。问题是,我在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)
          })
      })
    }
    

    1 回复  |  直到 7 年前
        1
  •  3
  •   Daff    8 年前

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

    app.service('myservice').hooks({
      before: {
        find(hook) {
          if(!hook.params.fromOtherHook) {
    
            const newParams = Object.assign({
              fromOtherHook: true
            }, hook.params);
    
            return hook.service.find(newParams);
          }
        }
      }
    });
    
    推荐文章