javascript - 如何使用feathers.js避免服务在钩子(Hook)中多次运行?

标签 javascript node.js feathersjs feathers-hook feathers-service

我在羽毛钩的羽毛服务中遇到问题。确切的问题是我在羽毛钩子(Hook)中使用羽毛服务,当我在钩子(Hook)中调用服务时,它会运行多次,从而会发生内存问题。我的问题是如何避免服务在钩子(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)
      })
  })
}

我预期的解决方案是服务应该在钩子(Hook)上单次运行。

最佳答案

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

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

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

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

关于javascript - 如何使用feathers.js避免服务在钩子(Hook)中多次运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46217651/

相关文章:

javascript - Angular4 - 在 JavaScript 文件中使用函数

javascript - 在 Sequelize 中制作此 SQL

javascript - 如何在codeigniter中的js中使用函数参数获取值

javascript - 覆盖 Node 中的默认值 'console' 是否存在任何真正的危险?

javascript - 从 CSV 动态创建对象

javascript - 如何从feathersjs promise 中提取值(value)

sequelize.js - 羽毛 Sequelize 不适用于 `` `原始 : false ``` anymore after upgrading to Buzzard

javascript - 从外部清除 IE 浏览缓存

node.js - Node express 公司和路线

reactjs - 使用 feathers express 时,出现页面未找到错误 #2355