Как добавить расчет в таблицу полей, используя перья крюка? - PullRequest
0 голосов
/ 18 января 2019

Предположим, у меня есть таблица с тремя полями: "id", "firstValue" и "secondValue". Я использую Postgres в качестве своей базы данных. Сначала я хочу добавить некоторые вычисления, например, второе поле «firstValue» должно быть (firstValue + secondValue) / 10. Кто-нибудь знает, как добавить этот расчет в службу перехвата? Может кто-нибудь привести пример метода в хуках?

Это шаблон в сервисе перехвата

module.exports = function () {
    return async context => {


      return context;
    };
  };

Я сохраняю этот файл как calc.js

А это шаблон в hooks.js

let calculate = require('./../../hooks/calculate');

module.exports = {
  before: {
    all: [],
    find: [calculate()], // add some calculation  
    get: [calculate()], // add some calculation 
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  after: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  error: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  }
};

Спасибо

1 Ответ

0 голосов
/ 23 января 2019

context.result - это объект, представляющий результат вызова службы (упомянутое здесь: https://docs.feathersjs.com/guides/basics/hooks.html),, к которому можно получить доступ в течение после перехвата. Тогда ваш перехват должен быть:

module.exports = function () {
    return async context => {
        context.result.computedField = ( context.result.firstValue + context.result.secondValue ) / 10

      return context;
    };
};

И файл хуков должен быть:

let calculate = require('./../../hooks/calculate');

module.exports = {
  before: {
    all: [],
    find: [], 
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  after: {
    all: [],
    find: [calculate()],
    get: [calculate()],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  error: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  }
};
...