Giới thiệu
Nút Set là công cụ chính của bạn để định hình lại dữ liệu khi nó chảy qua các workflow n8n. Khác với các nút lấy dữ liệu từ bên ngoài, Set tập trung hoàn toàn vào chuyển đổi những gì bạn đã có: thêm trường mới, ghi đè lên các trường hiện có, hoặc loại bỏ các trường bạn không cần. Điều này khiến nó trở nên thiết yếu để chuẩn bị payload trước khi gửi tới API, cơ sở dữ liệu hoặc các dịch vụ khác.
Mỗi mục trong n8n là một đối tượng JSON. Nút Set cho phép bạn xác định chính xác các trường mà mỗi mục nên chứa và các giá trị chúng sẽ giữ. Bạn có thể gán cố định giá trị, sao chép dữ liệu từ các trường khác, hoặc sử dụng biểu thức để tính toán các giá trị mới dựa trên dữ liệu upstream.
Các thao tác trường cơ bản
Nút Set hoạt động ở một trong hai chế độ: Giữ Chỉ Set (thay thế toàn bộ mục bằng các trường bạn định nghĩa) hoặc Thêm/Ghi đè (hợp nhất các trường mới của bạn vào mục hiện có). Đối với hầu hết các tác vụ biến đổi, Thêm/Ghi đè sẽ mang lại nhiều linh hoạt hơn.
Để thêm một trường, nhấp vào Thêm Trường và chọn loại phù hợp: Chuỗi, Số, Boolean, hoặc các loại khác. Mỗi trường yêu cầu một tên và một giá trị. Tên trở thành khóa JSON, và giá trị có thể là văn bản cố định, một số, hoặc một biểu thức.
Lưu ý rằng các trường gốc vẫn còn nguyên. Nếu bạn chuyển sang chế độ Giữ Chỉ Set, đầu ra sẽ chỉ chứa id, name và isActive.
Tham chiếu dữ liệu upstream bằng các biểu thức
Các Expressions là cách bạn truy cập dữ liệu từ các nút trước đó. Mẫu phổ biến nhất là {{$json.fieldName}}, đọc trường từ item hiện tại. Bạn cũng có thể dùng JavaScript bên trong expressions để biến đổi giá trị ngay khi được truy xuất.
Bạn có thể tham chiếu trường từ các nút khác bằng cách sử dụng {{$node.NodeName.json.fieldName}}. Điều này hữu ích khi bạn cần kết hợp dữ liệu từ nhiều nguồn hoặc so sánh giá trị giữa các bước của workflow.
Loại bỏ các trường không mong muốn
Đôi khi bạn cần loại bỏ các trường nhạy cảm hoặc không cần thiết trước khi gửi dữ liệu xuống dòng. Trong chế độ Keep Only Set, bạn chỉ định các trường bạn muốn giữ và mọi thứ khác biến mất. Trong chế độ Add/Overwrite, việc loại bỏ trường đòi hỏi bật công tắc Remove Other Fields hoặc đặt thủ công các trường về null.
Quy trình này an toàn hơn so với việc cố gắng xóa từng trường riêng lẻ, đặc biệt khi làm việc với cấu trúc dữ liệu động nơi bạn có thể không biết trước hết tên trường.
Mẫu thường gặp và những sai sót
Khi xây dựng các biến đổi phức tạp, hãy làm việc theo từng bước. Thêm một hoặc hai trường, chạy nút và xác nhận đầu ra trước khi thêm nhiều trường hơn. Cách này giúp gỡ lỗi dễ dàng hơn nhiều so với cấu hình mười trường cùng lúc và xử lý lỗi.
Lỗi biểu thức là phổ biến. Nếu một biểu thức không thể đánh giá, n8n通常 sẽ để trống trường hoặc hiển thị biểu tượng lỗi. Kiểm tra lại cú pháp của bạn: các biểu thức phải được bọc bằng hai dấu ngoặc nhọn và mã JavaScript bên trong phải hợp lệ. Sử dụng panel Expression Editor để thử nghiệm các biểu thức trước khi cam kết.
Các khác biệt kiểu dữ liệu có thể gây vấn đề ở phần sau dây chuyền. Nếu một trường mong đợi số nhưng nhận chuỗi, hãy chuyển đổi rõ ràng bằng Number hoặc parseInt bên trong biểu thức. Tương tự, dùng String để chuyển đổi số thành văn bản khi cần.
Nút Set xử lý từng item độc lập. Nếu bạn có 50 item vào nút, mỗi item sẽ được biến đổi theo định nghĩa trường của bạn. Điều này có nghĩa là các biểu thức như {{$json.fieldName}} luôn tham chiếu đến item hiện tại đang được xử lý, chứ không phải toàn bộ mảng.
Tóm tắt
Nút Set là dao mổ của bạn cho biến đổi dữ liệu trong n8n. Dùng chế độ Add/Overwrite khi bạn muốn bổ sung dữ liệu hiện có, và Keep Only Set khi bạn cần tạo một mặt phẳng sạch với chỉ những trường cụ thể. Các biểu thức cho phép bạn tham chiếu dữ liệu từ bất kỳ đâu trong workflow và áp dụng biến đổi JavaScript ngay trên dòng mã. Thành thạo nút Set và bạn sẽ dành ít thời gian hơn để vật lộn với các định dạng dữ liệu và nhiều thời gian hơn để xây dựng các workflow functional.
Bài kiểm tra cuối bài
Ôn lại kiến thức, thử sức và nhận góp ý cho bài làm.