Как передавать переменные между двумя шаблонами кода типа функции

Мой канал получает сообщения HL7, и у меня есть 2 трансформера на моем канале. Я собираю все данные из сообщения HL7 в один преобразователь, например:

- var vACCNo= msg['PID']['PID.17']['PID.17.1'].toString();
- var vSTATE=msg['PID']['PID.11']['PID.11.4'].toString();
  • .... Во втором преобразователе я помещаю все эти данные во внешнюю БД как оператор вставки, например вставку в значения таблицы x (vACCCNo, vSTATE....).

В приведенном выше дизайне без каких-либо действий данные, захваченные в первом преобразователе, доступны во втором, и он работает.

Теперь я планирую избавиться от этих двух преобразователей и перенести их в шаблоны кода, где я планирую создать отдельную функцию для каждого из этих преобразователей.

Но как я могу передать переменные, захваченные в первой функции, во вторую?

Спасибо


person devroy1899    schedule 14.04.2019    source источник


Ответы (1)


Когда вы говорите 2 трансформатора, я предполагаю, что вы имеете в виду две ступени в одном и том же трансформаторе? Различные шаги преобразования компилируются в одну и ту же функцию javascript, поэтому они используют один и тот же контекст/область переменных. Чтобы на самом деле передать значения другому преобразователю (например, от вашего исходного преобразователя к целевому преобразователю), обычно вы должны использовать для этого channelMap.

В вашей (предполагаемой) ситуации вы можете добавить все свои переменные к объекту, который вы возвращаете из первой функции. Передайте объект второй функции.

Шаблоны кода

function getValues(msg) {
    var fieldWithComplicatedAssignment = '';
    var result = {
        vACCNo: msg['PID']['PID.17']['PID.17.1'].toString(),
        vSTATE: msg['PID']['PID.11']['PID.11.4'].toString(),
        fieldWithComplicatedAssignment: fieldWithComplicatedAssignment
    };
    if (optionalCondition) {
        result.optionalField = '';
    }
    return result;
}

function insertIntoDB(obj) {
    // insert into table x values (obj.vACCNo, obj.vSTATE....)
    // return a result status indicating succeeded or failure (or
    // just throw an error from this function)
}

Ступени-трансформеры

  1. var obj = getValues(msg);
  2. var result = insertIntoDb(obj);
person agermano    schedule 15.04.2019