我在羽毛钩羽毛服务方面遇到问题。确切的问题是我在羽毛钩中使用羽毛服务,当我在钩子中调用服务时,它会运行多次,以便发生内存问题。我的问题是如何避免服务多次运行挂钩。
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)
})
})
}
我期望的解决方案是服务应该在钩子上一次运行。
答案 0 :(得分:3)
理想情况下,服务方法不应该在钩子中调用自身,但是如果这样做,则需要一个断开条件,这样它就不会在无限循环中调用自身。这可以通过例如如果未设置,则传递将跳过自引用调用的参数:
app.service('myservice').hooks({
before: {
find(hook) {
if(!hook.params.fromOtherHook) {
const newParams = Object.assign({
fromOtherHook: true
}, hook.params);
return hook.service.find(newParams);
}
}
}
});