Function Node (Code Node)
Mục tiêu bài học
Sau bài học này, bạn sẽ:
- Viết code JavaScript/TypeScript để xử lý dữ liệu phức tạp
- Hiểu sự khác biệt giữa chế độ Run Once for All Items và Run for Each Item
- Sử dụng các thư viện ngoài (external libraries)
1. Code Node
Khi các node có sẵn không đủ đáp ứng nhu cầu, Code Node là giải pháp cuối cùng.
Hai chế độ chạy (Mode)
| Chế độ | Input | Output | Khi nào dùng? |
|---|---|---|---|
| Run Once for All Items | $input.all() (Mảng) | Mảng Objects | Gom nhóm, tính tổng, xử lý mảng. |
| Run for Each Item | $input.item (Object) | Object | Xử lý từng dòng độc lập. |
2. Ví dụ: Thêm trường mới (Run Once)
javascript
// Lặp qua tất cả item
const results = [];
for (const item of $input.all()) {
const json = item.json;
// Logic xử lý
json.fullName = `${json.firstName} ${json.lastName}`;
json.isAdult = json.age >= 18;
results.push({ json });
}
return results;3. Các biến và hàm hỗ trợ
$input.all(): Lấy tất cả input.$input.first(): Lấy input đầu tiên.$env: Biến môi trường.$now: Thời gian hiện tại.
4. Sử dụng thư viện ngoài
Cần cấu hình biến môi trường Docker:
yaml
NODE_FUNCTION_ALLOW_EXTERNAL=lodash,moment,axiosSử dụng trong Code:
javascript
const _ = require('lodash');Tổng kết
Code Node biến n8n thành môi trường lập trình thực thụ.
Bài học tiếp theo
Làm sao để xử lý khi workflow gặp lỗi?