Dựa trên video hướng dẫn của n8n
Bạn đang gặp khó khăn khi hiểu cách dữ liệu hoạt động trong n8n? Bạn không đơn độc đâu! Nhiều người mới bắt đầu với n8n thường bối rối về cách dữ liệu được xử lý và truyền giữa các node.
Mình đã tóm tắt video thứ 4 trong series hướng dẫn cơ bản về n8n, tập trung vào các khái niệm dữ liệu quan trọng mà bạn cần nắm vững để xây dựng workflow hiệu quả. Hãy cùng đi sâu vào JSON, Lists và cách chúng hoạt động trong n8n nhé!
Nội Dung Chính
Khái Niệm Cơ Bản Về Cấu Trúc Dữ Liệu
Video bắt đầu bằng việc giới thiệu hai cấu trúc dữ liệu chính mà n8n sử dụng: JSON và Lists. Đây là nền tảng quan trọng để hiểu cách thức hoạt động của n8n.
Điểm Chính:
- JSON (JavaScript Object Notation) là cách phổ biến để lưu trữ dữ liệu, được viết giữa dấu ngoặc nhọn { }
- JSON bao gồm các cặp key-value, phân cách bằng dấu phẩy
- Lists là tập hợp các đối tượng (có thể cùng hoặc khác loại), được viết giữa dấu ngoặc vuông [ ]
- JSON có thể lồng nhau (embedded JSON), giúp tổ chức dữ liệu phức tạp
// Ví dụ về JSON
{
"first_name": "Emily",
"last_name": "Johnson",
"email": "emily@example.com",
"location": {
"country": "USA",
"city": "New York"
}
}
Ý Kiến Của Mình:
Việc hiểu rõ JSON và Lists là nền tảng quan trọng không chỉ trong n8n mà còn trong nhiều công cụ automation khác. Mình khuyên bạn nên dành thời gian nắm vững hai khái niệm này trước khi đi sâu vào các tính năng phức tạp hơn của n8n nhé!
JSON và Lists Trong n8n
Phần này giải thích cách truy cập dữ liệu trong JSON và mối tương quan giữa JSON và bảng (tables) trong n8n. Đây là khái niệm quan trọng để hiểu cách n8n biểu diễn và xử lý dữ liệu.
Điểm Chính:
- Truy cập dữ liệu trong JSON sử dụng “dot notation”:
$json.first_name
- Với JSON lồng nhau, có thể sử dụng nhiều “dot notation” liên tiếp:
$json.location.country
- Một JSON tương đương với một hàng trong bảng, với các key là tiêu đề cột
- Danh sách các JSON tương đương với một bảng có nhiều hàng
- Trong n8n, một JSON trong danh sách được gọi là một “item”
// Danh sách các JSON (items)
[
{
"first_name": "Emily",
"last_name": "Johnson",
"email": "emily@example.com"
},
{
"first_name": "Paul",
"last_name": "Harris",
"email": "paul@example.com"
},
{
"first_name": "Marcus",
"last_name": "Bennett",
"email": "marcus@example.com"
}
]
Ý Kiến Của Mình:
Sự tương đồng giữa JSON và bảng là một cách trực quan để hiểu dữ liệu trong n8n. Khi mình mới bắt đầu, việc tưởng tượng mỗi item như một hàng trong Excel đã giúp mình dễ dàng hình dung cách dữ liệu được xử lý trong workflow.
Cách Node Xử Lý Items
Phần này giải thích nguyên tắc quan trọng về cách các node trong n8n xử lý dữ liệu đầu vào và tạo dữ liệu đầu ra. Hiểu được nguyên tắc này sẽ giúp bạn xây dựng workflow hiệu quả.
Điểm Chính:
- Các node n8n chỉ nhận và trả về dữ liệu dưới dạng danh sách các item (JSON)
- Mỗi node thực thi một lần cho mỗi item trong dữ liệu đầu vào (có một số ngoại lệ)
- Có thể cấu hình node để “Execute once” (chỉ thực thi một lần cho item đầu tiên)
- Ngay cả khi không có dữ liệu để trả về, node vẫn trả về một danh sách với một JSON trống
// Ví dụ về luồng thực thi của workflow
Execute Workflow → Empty JSON → [ {} ]
Google Sheets Node → 3 rows → [ {JSON1}, {JSON2}, {JSON3} ]
Filter Node → Filter condition → [ {JSON that passed filter} ]
Ý Kiến Của Mình:
Nguyên tắc “mỗi node thực thi một lần cho mỗi item” là điều mình thấy nhiều người mới học n8n thường bỏ qua. Hiểu nguyên tắc này sẽ giúp bạn tránh được nhiều lỗi phổ biến khi xây dựng workflow phức tạp đấy!
Biểu Thức (Expressions) và Cách Sử Dụng
Phần này đi sâu vào cách sử dụng biểu thức (expressions) trong n8n để truy cập và xử lý dữ liệu. Expressions là công cụ mạnh mẽ giúp bạn tùy chỉnh workflow theo nhu cầu.
Điểm Chính:
- Expressions được tạo bằng cách kéo key từ bảng/JSON/schema view
- Expressions luôn được đặt trong dấu ngoặc nhọn {{ }}
- Có thể sử dụng JavaScript trong expressions
- Có thể kết hợp nhiều expressions với văn bản thường
- Giao diện n8n hiển thị giá trị ví dụ từ item đầu tiên
// Ví dụ về expressions
// Truy cập giá trị
{{ $json.first_name }}
// Sử dụng JavaScript
{{ $json.last_name.toUpperCase() }}
// Kết hợp expressions và văn bản
{{ $json.first_name }} {{ $json.last_name }} ({{ $json.email }}) just signed up to Acme!
Ý Kiến Của Mình:
Expressions là thứ làm cho n8n thực sự linh hoạt. Ban đầu mình cũng hơi lúng túng với cú pháp, nhưng khi đã quen thì bạn sẽ thấy chúng rất mạnh mẽ. Mình đặc biệt thích việc có thể sử dụng các hàm JavaScript bên trong expressions – điều này mở ra rất nhiều khả năng xử lý dữ liệu phức tạp mà không cần đến code node!
Ứng Dụng Thực Tế Trong n8n
Phần cuối video cho thấy cách áp dụng các khái niệm đã học vào một ví dụ thực tế trong n8n, sử dụng node Edit Fields để tạo trường dữ liệu mới từ dữ liệu hiện có.
Điểm Chính:
- Sử dụng node Edit Fields để tạo trường “full_name” kết hợp từ first_name và last_name
- Áp dụng hàm JavaScript toUpperCase() để chuyển last_name thành chữ in hoa
- Thấy được kết quả tức thì khi sử dụng nút “Test Step”
- Mỗi item trong danh sách đầu vào đều được xử lý và có trường mới trong đầu ra
// Tạo trường full_name
{{ $json.first_name }} {{ $json.last_name }}
// Tạo trường full_name với last_name in hoa
{{ $json.first_name }} {{ $json.last_name.toUpperCase() }}
Ý Kiến Của Mình:
Ví dụ thực tế này cho thấy sức mạnh của expressions trong n8n. Việc kết hợp và chuyển đổi dữ liệu trở nên dễ dàng mà không cần code phức tạp. Mình thường sử dụng node Edit Fields như một “trạm dừng” trong workflow để chuẩn bị dữ liệu trước khi gửi đến các node khác – một kỹ thuật rất hữu ích bạn nên thử đấy!