Nút function
Nút function được sử dụng để viết mã JavaScript tùy chỉnh, cho phép thực hiện các phép tính phức tạp, chuyển đổi dữ liệu và logic xử lý tin nhắn. Nó cung cấp sự linh hoạt để triển khai logic mà các nút tiêu chuẩn không hỗ trợ.
Cài đặt nút function

1. Tên
Trường để chỉ định tên của nút.
Tên sẽ hiển thị trong không gian làm việc và giúp dễ dàng xác định nút.
Nếu để trống, nút sẽ được gọi là function.
Ví dụ:
- Tên nút:
auth data
2. Function
Trong trường này, nhập mã JavaScript sẽ được thực thi cho mỗi tin nhắn đi qua nút.
Định dạng dữ liệu đầu vào:
Mã nhận đối tượng msg, đại diện cho tin nhắn hiện tại.
Định dạng dữ liệu trả về:
- Nút phải trả về đối tượng tin nhắn (hoặc mảng các đối tượng) để truyền dữ liệu tiếp theo trong luồng.
- Nếu trả về
null, tin nhắn sẽ không được gửi đi tiếp.
Ví dụ:
// Tăng giá trị msg.payload lên 1
msg.payload = msg.payload + 1;
return msg;
3. Ví dụ đầu ra (JSON)
Ví dụ về dữ liệu mà hàm trả về, ở định dạng JSON.
Dựa trên ví dụ này, một sơ đồ dữ liệu cho nút tiếp theo sẽ được xây dựng — các trường của nó sẽ xuất hiện trong khối Input Schema của nút tiếp theo. Trình soạn thảo sẽ so sánh ví dụ với mã của hàm.
Các trường trong ví dụ mô tả gốc của đối tượng msg, chứ không phải msg.payload: hàm trả về toàn bộ tin nhắn.
Ví dụ cũng phục vụ như dữ liệu thử nghiệm: nếu khi nhấn nút Execute trong một trong các nút tiếp theo (admin-api, http request) hàm không truyền dữ liệu đi tiếp, giá trị của trường này sẽ được sử dụng.
Ví dụ:
{
"payload": {
"orderId": 123,
"status": "paid"
}
}
Ví dụ sử dụng
Ví dụ 1: Nhân giá trị trong msg.payload
msg.payload = msg.payload * 2;
return msg;
Mô tả:
- Lấy giá trị
msg.payload, nhân nó với 2 và gửi đối tượng đã cập nhật.
Ví dụ 2: Thêm thuộc tính mới
msg.newProperty = "Hello, World!";
return msg;
Mô tả:
- Tạo một thuộc tính mới
newPropertyvà thêm nó vào đối tượngmsg.
Ví dụ 3: Xử lý tin nhắn có điều kiện
if (msg.payload > 100) {
msg.alert = "High value detected!";
} else {
msg.alert = "Value is normal.";
}
return msg;
Mô tả:
- Thêm thuộc tính
alertvới thông báo cảnh báo tùy thuộc vào giá trị củamsg.payload.
Ví dụ 4: Lọc tin nhắn
if (msg.payload > 50) {
return msg; // Truyền tin nhắn đi tiếp
}
return null; // Dừng tin nhắn
Mô tả:
- Chỉ cho phép các tin nhắn có
msg.payload > 50, các tin nhắn khác sẽ bị dừng lại.