Nhảy đến nội dung

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

IMG2

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 newProperty và thêm nó vào đối tượng msg.

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 alert với thông báo cảnh báo tùy thuộc vào giá trị của msg.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.