Перейти к содержимому

Code Node

Программирование в n8n — JavaScript и Python

Code Node позволяет выполнять произвольный код на JavaScript или Python.

Код выполняется один раз, получая все items:

const items = $input.all();
return items.map(item => ({
json: {
...item.json,
processed: true
}
}));

Код выполняется для каждого item отдельно:

const item = $input.item;
return {
json: {
...item.json,
processed: true
}
};
// Получить входные данные
const items = $input.all();
// Обработка
const results = [];
for (const item of items) {
results.push({
json: {
original: item.json,
modified: transform(item.json)
}
});
}
// Вернуть результат
return results;
// Все items
const items = $input.all();
// Первый item
const first = $input.first();
// Последний item
const last = $input.last();
// Данные из другой ноды
const httpData = $('HTTP Request').all();
const firstHttpItem = $('HTTP Request').first();
// Переменные окружения
const apiKey = $env.API_KEY;
// Глобальные переменные
const baseUrl = $vars.BASE_URL;
// Информация о выполнении
const executionId = $execution.id;
const workflowName = $workflow.name;
// Async/await поддерживается
const response = await fetch('https://api.example.com/data');
const data = await response.json();
return [{ json: data }];
// Встроенные библиотеки
const moment = require('moment');
const _ = require('lodash');
const crypto = require('crypto');
// Использование
const formatted = moment().format('YYYY-MM-DD');
const unique = _.uniq(items.map(i => i.json.name));
const hash = crypto.createHash('sha256').update('data').digest('hex');
// Создание binary из строки
const buffer = Buffer.from('Hello World');
return [{
json: { fileName: 'test.txt' },
binary: {
data: await this.helpers.prepareBinaryData(buffer, 'test.txt')
}
}];
// Чтение binary
const binaryData = items[0].binary.data;
const buffer = await this.helpers.getBinaryDataBuffer(0, 'data');
const content = buffer.toString('utf8');
# Получить входные данные
items = _input.all()
# Обработка
results = []
for item in items:
results.append({
'json': {
'original': item['json'],
'processed': True
}
})
# Вернуть результат
return results
# Все items
items = _input.all()
# Первый item
first = _input.first()
# Данные из другой ноды
http_data = _node['HTTP Request'].all()
# Переменные окружения
import os
api_key = os.environ.get('API_KEY')
import json
import datetime
import re
from collections import defaultdict
# Использование
data = json.loads(items[0]['json']['text'])
now = datetime.datetime.now().isoformat()
matches = re.findall(r'\d+', text)
const items = $input.all();
return items.filter(item =>
item.json.status === 'active'
);
const items = $input.all();
const grouped = items.reduce((acc, item) => {
const key = item.json.category;
if (!acc[key]) acc[key] = [];
acc[key].push(item.json);
return acc;
}, {});
return Object.entries(grouped).map(([category, items]) => ({
json: { category, items, count: items.length }
}));
const items = $input.all();
const total = items.reduce((sum, item) =>
sum + item.json.amount, 0
);
const average = total / items.length;
return [{
json: {
total,
average,
count: items.length
}
}];
// Объединение данных из двух нод
const users = $('Get Users').all();
const orders = $('Get Orders').all();
return users.map(user => {
const userOrders = orders.filter(o =>
o.json.userId === user.json.id
);
return {
json: {
...user.json,
orders: userOrders.map(o => o.json),
orderCount: userOrders.length
}
};
});
const response = await fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${$env.API_KEY}`
},
body: JSON.stringify({
query: $json.query
})
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const data = await response.json();
return [{ json: data }];
const items = $input.all();
const results = [];
for (const item of items) {
try {
const processed = riskyOperation(item.json);
results.push({
json: { success: true, data: processed }
});
} catch (error) {
results.push({
json: {
success: false,
error: error.message,
original: item.json
}
});
}
}
return results;
console.log('Debug:', $json);
console.log('Items count:', items.length);

Логи видны в деталях выполнения.

if (!$json.requiredField) {
throw new Error('Required field is missing');
}
const BATCH_SIZE = 100;
const items = $input.all();
const results = [];
for (let i = 0; i < items.length; i += BATCH_SIZE) {
const batch = items.slice(i, i + BATCH_SIZE);
const batchResults = await processBatch(batch);
results.push(...batchResults);
}
return results;
const items = $input.all();
const results = await Promise.all(
items.map(async item => {
const data = await fetchData(item.json.id);
return { json: data };
})
);
return results;