Оптимизация. Замена узлов на Code
В предыдущей главе мы сделали такую схему:

Она полностью рабочая, и вы можете ее протестировать через Postman и использовать в своих проектах.
Я предложу еще один вариант ее реализации.
Надежные решения это, как правило, самые простые решения.
Меньше узлов, меньше ошибок, проще поддерживать и развивать.
В текущей логике используется узелSwitch, который перенаправляет поток в зависимости от значения параметра operation.
После узла Switch идут однотипные узлы с кодом, которые отличаются только операцией с числами.
В данном случае можно скомбинировать узел Switch и узлы Code в один узел Code, который будет выполнять проверку операции и выполнять соответствующий код.
Это будет выглядеть так: 
Код в узле Code будет таким:
const body = $input.first().json.body;
const operand1 = body.operand1;
const operand2 = body.operand2;
const operation = body.operation;
let result;
switch (operation) {
case 'addition':
result = operand1 + operand2;
break;
case 'subtraction':
result = operand1 - operand2;
break;
case 'multiplication':
result = operand1 * operand2;
break;
case 'division':
result = operand2 !== 0 ? operand1 / operand2 : 'Error: division by zero';
break;
case 'power':
result = operand1 ** operand2;
break;
case 'square':
result = operand1 ** 2;
break;
case 'squareRoot':
result = operand1 >= 0 ? Math.sqrt(operand1) : 'Error: negative number';
break;
case 'reminder':
result = operand2 !== 0 ? operand1 % operand2 : 'Error: division by zero';
break;
default:
result = 'Error: unknown operation';
}
return [{ json: { result } }];
Пояснение кода
В этом коде мы сначала получаем данные из входящего запроса, а затем в зависимости от значения operation выполняем соответствующую арифметическую операцию.
Тут также используется конструкция switch, которая позволяет выполнять разные действия в зависимости от значения переменной operation. Это аналог узла Switch, но в виде кода.
Также для демонстрации я добавил несколько операций и обработку ошибок, например, деление на ноль или извлечение квадратного корня из отрицательного числа.
Преимущества такого подхода
- Меньше узлов: Уменьшается количество узлов в схеме, что делает ее более компактной и понятной.
- Упрощение логики: Логика обработки операций становится более простой
- Легкость в поддержке: Добавление новых операций или изменение существующих становится проще, так как все находится в одном месте.
- Улучшение производительности: Меньше узлов означает меньше операций, что может улучшить производительность выполнения сценария.
- Универсальность: Один узел
Codeможет обрабатывать все операции, что делает его более универсальным и гибким. - Читаемость: Код становится более читаемым и понятным, так как вся логика сосредоточена в одном месте.
Недостатки
- Сложность кода: Код может стать сложнее для понимания, особенно для тех, кто не знаком с JavaScript.
- Отсутствие визуализации: Визуальная схема становится менее наглядной, так как все операции объединены в один узел.
- Отладка: Отладка кода может быть сложнее, так как ошибки могут возникать в разных местах в зависимости от операции.
Заключение
Этот подход позволяет сделать сценарий более компактным и понятным, а также улучшить его производительность.
Но если вам нужно будет ветвление и специфические действия для каждой операции, то лучше использовать узлы Switch и Code отдельно.
Если каждая операция требует уникальной логики или обработки, то лучше оставить узел Switch и после него вести потоки.
Вы архитектор
Моя задача показать вам разные подходы, а решение вы выберете сами.
Чем больше у вас будет инструментов в арсенале, тем проще будет решать задачи.
Экспериментируйте с кодом, добавьте новые операции или измените существующие.
Это поможет вам лучше понять, как работает n8n и как можно использовать его возможности для решения различных задач.