Как избежать многократного запуска сервиса в перехвате с использованием feathers.js?

Я сталкиваюсь с проблемой в обслуживании перьев в крюке перьев. Именно проблема в том, что я использую сервис перо в перехвате, и когда я вызываю сервис в перехвате, он запускается несколько раз, так что возникает проблема с памятью. Мой вопрос, как избежать службы многократного запуска в крючке.

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 ответ

Решение

В идеале сервисный метод не должен вызывать себя в хуке, но если вы это сделаете, вам понадобится условие прерывания, чтобы он не продолжал вызывать себя в бесконечном цикле. Это можно сделать, например, передав параметр, который пропустит самоссылочный вызов, если он не установлен:

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

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

        return hook.service.find(newParams);
      }
    }
  }
});
Другие вопросы по тегам