Tự Học n8n Với Ví Dụ CRUD Dữ Liệu
Tự Học n8n Với Ví Dụ CRUD Dữ Liệu
Chào mừng bạn đến với hành trình khám phá n8n, một công cụ tự động hóa workflow mạnh mẽ và linh hoạt! Nếu bạn đang tìm kiếm một giải pháp để kết nối các ứng dụng khác nhau, tự động hóa các tác vụ lặp đi lặp lại, và xây dựng quy trình làm việc phức tạp mà không cần code quá nhiều, thì n8n chính là lựa chọn tuyệt vời.
Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về n8n, từ những khái niệm cơ bản đến việc xây dựng một ví dụ CRUD (Create, Read, Update, Delete) dữ liệu hoàn chỉnh. Chúng ta sẽ đi từng bước, giải thích chi tiết và cung cấp ví dụ cụ thể để bạn có thể tự học và áp dụng n8n một cách hiệu quả.
n8n là gì?
n8n (pronounced "n-eight-n") là một nền tảng tự động hóa workflow mã nguồn mở, cho phép bạn kết nối các ứng dụng khác nhau và tự động hóa các tác vụ. Nó cung cấp một giao diện trực quan, dựa trên trình duyệt, cho phép bạn kéo thả các node (nút) để tạo ra các workflow phức tạp. Mỗi node đại diện cho một hành động cụ thể, chẳng hạn như gửi email, truy vấn cơ sở dữ liệu, hoặc xử lý dữ liệu.
Tại sao nên chọn n8n?
- Mã nguồn mở: n8n là một dự án mã nguồn mở, nghĩa là bạn có quyền truy cập vào mã nguồn, chỉnh sửa, và phân phối nó. Điều này mang lại sự linh hoạt và kiểm soát cao.
- Dễ sử dụng: Giao diện kéo thả trực quan giúp bạn dễ dàng tạo ra các workflow mà không cần phải viết code quá nhiều.
- Khả năng mở rộng: n8n hỗ trợ một lượng lớn các ứng dụng và dịch vụ, đồng thời cho phép bạn tạo các node tùy chỉnh để kết nối với các ứng dụng khác không được hỗ trợ sẵn.
- Tự chủ dữ liệu: Vì n8n có thể được cài đặt trên server của bạn, bạn có toàn quyền kiểm soát dữ liệu của mình.
- Giá cả phải chăng: Bản thân n8n là miễn phí để sử dụng. Chi phí duy nhất là chi phí hạ tầng (server, database) nếu bạn tự host.
Các Khái Niệm Cơ Bản trong n8n
Trước khi bắt đầu xây dựng workflow, chúng ta cần làm quen với một số khái niệm cơ bản trong n8n:
- Workflow: Một workflow là một chuỗi các node được kết nối với nhau để thực hiện một tác vụ cụ thể.
- Node: Một node đại diện cho một hành động cụ thể, ví dụ như đọc dữ liệu từ một API, gửi email, hoặc cập nhật cơ sở dữ liệu.
- Connection: Một connection là một đường kết nối giữa hai node, chỉ ra luồng dữ liệu giữa chúng.
- Credentials: Credentials là thông tin xác thực cần thiết để kết nối với một ứng dụng hoặc dịch vụ (ví dụ: API key, username/password).
- Expression: Expressions cho phép bạn truy cập và thao tác dữ liệu giữa các node. Chúng được viết bằng JavaScript.
- Parameter: Mỗi node có các parameter (tham số) để bạn cấu hình hành vi của nó.
Chuẩn bị Môi Trường Phát Triển
Để bắt đầu sử dụng n8n, bạn cần cài đặt nó. Có nhiều cách để cài đặt n8n:
- Sử dụng n8n Cloud: Đây là cách đơn giản nhất. Bạn chỉ cần đăng ký một tài khoản trên n8n Cloud và bắt đầu sử dụng.
- Cài đặt bằng Docker: Docker là một nền tảng containerization, cho phép bạn chạy n8n trong một môi trường cô lập. Đây là một cách phổ biến và khuyến khích để cài đặt n8n trên server.
- Cài đặt trực tiếp: Bạn cũng có thể cài đặt n8n trực tiếp trên server của mình bằng cách sử dụng npm (Node Package Manager).
Trong bài viết này, chúng ta sẽ sử dụng Docker để cài đặt n8n.
Bước 1: Cài đặt Docker và Docker Compose
Nếu bạn chưa cài đặt Docker và Docker Compose, hãy làm theo hướng dẫn trên trang web chính thức của Docker: https://docs.docker.com/get-docker/
Bước 2: Tạo file docker-compose.yml
version: '3.7'
services:
n8n:
image: n8nio/n8n
ports:
- 5678:5678
volumes:
- ~/.n8n:/home/node/.n8n
environment:
- N8N_HOST=${N8N_HOST}
- N8N_PORT=5678
- N8N_PROTOCOL=http
- N8N_EMAIL_MODE=smtp
- N8N_SMTP_HOST=${N8N_SMTP_HOST}
- N8N_SMTP_PORT=${N8N_SMTP_PORT}
- N8N_SMTP_USER=${N8N_SMTP_USER}
- N8N_SMTP_PASS=${N8N_SMTP_PASS}
- NODE_ENV=production # Or 'development' if you are developing
restart: always
Thay thế ${N8N_HOST}
, ${N8N_SMTP_HOST}
, ${N8N_SMTP_PORT}
, ${N8N_SMTP_USER}
, ${N8N_SMTP_PASS}
bằng các giá trị thích hợp. Ví dụ:
N8N_HOST
: Tên miền hoặc địa chỉ IP của server của bạn (ví dụ:localhost
).N8N_SMTP_HOST
: Địa chỉ SMTP server của bạn (ví dụ:smtp.gmail.com
).N8N_SMTP_PORT
: Cổng SMTP của bạn (ví dụ:587
).N8N_SMTP_USER
: Username SMTP của bạn.N8N_SMTP_PASS
: Password SMTP của bạn.
Lưu ý: Nếu bạn không muốn cấu hình email, bạn có thể bỏ qua các biến môi trường N8N_EMAIL_MODE
, N8N_SMTP_HOST
, N8N_SMTP_PORT
, N8N_SMTP_USER
, N8N_SMTP_PASS
.
Bước 3: Khởi động n8n
Chạy lệnh sau trong thư mục chứa file docker-compose.yml
:
docker-compose up -d
```
Lệnh này sẽ tải xuống và khởi động container n8n. Sau khi khởi động xong, bạn có thể truy cập n8n trên trình duyệt của mình bằng địa chỉ http://localhost:5678 (hoặc địa chỉ bạn đã cấu hình trong N8N_HOST).
Ví Dụ CRUD Dữ Liệu Với n8n và
Google Sheets
Bây giờ chúng ta đã cài đặt xong n8n, hãy cùng nhau xây dựng một ví dụ CRUD dữ liệu đơn giản
sử dụng Google Sheets làm cơ sở dữ liệu
.
Mô Tả Bài Toán
Chúng ta sẽ xây dựng một workflow cho phép chúng ta:
Create (Tạo): Thêm một dòng mới vào Google Sheets.
Read (Đọc): Lấy
dữ liệu
từ Google Sheets dựa trên một điều kiện.
Update (Cập Nhật): Cập nhật một dòng trong Google Sheets.
Delete (Xóa): Xóa một dòng trong Google Sheets.
Bước 1: Tạo Google Sheet
Tạo một Google Sheet mới.
Đặt tên cho Sheet (ví dụ: n8n_crud).
Thêm các cột tiêu đề (ví dụ: ID, Name, Email).
Bước 2: Tạo Credentials Google Sheets trong n8n
Trong giao diện n8n, click vào "Credentials".
Click vào "Create new".
Chọn "Google Sheets".
Đặt tên cho Credentials (ví dụ: Google Sheets Credentials).
Click vào "Connect my Google Account".
Làm theo hướng dẫn để cấp quyền cho n8n truy cập vào Google Sheets của bạn.
Click vào "Create".
Bước 3: Xây Dựng Workflow Tạo Dữ Liệu (Create)
Tạo một workflow mới.
Thêm một
node
"
Webhook
".
Node
này sẽ nhận dữ liệu từ một
HTTP request
.
Trong
node
"Webhook", chọn method "POST".
Đặt path (ví dụ: /create).
Lưu ý URL Webhook (ví dụ: http://localhost:5678/webhook/create).
Thêm một
node
"
Google Sheets
".
Trong
node
"Google Sheets", chọn Operation "Append".
Chọn Credentials "Google Sheets Credentials" mà bạn đã tạo ở bước 2.
Nhập Sheet Name (ví dụ: n8n_crud).
Trong "Values", nhập các giá trị bạn muốn thêm vào Google Sheet. Bạn có thể sử dụng expressions để truy cập dữ liệu từ
node
"Webhook". Ví dụ:
Name: {{$json["name"]}}
Email: {{$json["email"]}}
Kết nối
node
"Webhook" với
node
"Google Sheets".
Kích hoạt workflow.
Kiểm Tra Tạo Dữ Liệu (Create)
Sử dụng một công cụ như Postman hoặc cURL để gửi một POST request đến URL Webhook với dữ liệu bạn muốn thêm vào Google Sheet. Ví dụ:
{
"name": "John Doe",
"email": "john.doe@example.com"
}
```
Kiểm tra Google Sheet của bạn để xem dữ liệu đã được thêm vào chưa.
Bước 4: Xây Dựng Workflow Đọc Dữ Liệu (Read)
Thêm một
node
"Webhook".
Trong
node
"Webhook", chọn method "GET".
Đặt path (ví dụ: /read).
Lưu ý URL Webhook (ví dụ: http://localhost:5678/webhook/read).
Thêm một
node
"Set".
Node
này sẽ lấy tham số từ URL và lưu trữ nó vào một biến.
Trong
node
"Set", thêm một thuộc tính "ID" với giá trị {{$parameter["ID"]}}.
Thêm một
node
"Google Sheets".
Trong
node
"Google Sheets", chọn Operation "Get Rows".
Chọn Credentials "Google Sheets Credentials".
Nhập Sheet Name (ví dụ: n8n_crud).
Trong "Filter", nhập điều kiện lọc dữ liệu. Ví dụ: ID = {{$node["Set"]["json"]["ID"]}}.
Kết nối
node
"Webhook" với
node
"Set" và
node
"Set" với
node
"Google Sheets".
Thêm một
node
"Respond".
Node
này sẽ trả về dữ liệu cho người dùng.
Trong
node
"Respond", chọn "JSON" và nhập expression {{$node["Google Sheets"]["json"]}}.
Kết nối
node
"Google Sheets" với
node
"Respond".
Kích hoạt workflow.
Kiểm Tra Đọc Dữ Liệu (Read)
Truy cập URL Webhook với tham số ID. Ví dụ: http://localhost:5678/webhook/read?ID=1.
Bạn sẽ nhận được dữ liệu của dòng có ID là 1.
Bước 5: Xây Dựng Workflow Cập Nhật Dữ Liệu (Update)
Thêm một
node
"Webhook".
Trong
node
"Webhook", chọn method "PUT".
Đặt path (ví dụ: /update).
Lưu ý URL Webhook (ví dụ: http://localhost:5678/webhook/update).
Thêm một
node
"Set".
Node
này sẽ lấy ID từ URL và các giá trị cần cập nhật từ body của request.
Thêm một thuộc tính "ID" với giá trị {{$parameter["ID"]}}.
Thêm các thuộc tính khác với giá trị từ $json (ví dụ: Name: {{$json["name"]}}, Email: {{$json["email"]}}).
Thêm một
node
"Google Sheets".
Trong
node
"Google Sheets", chọn Operation "Update".
Chọn Credentials "Google Sheets Credentials".
Nhập Sheet Name (ví dụ: n8n_crud).
Trong "Row", nhập số thứ tự của dòng cần cập nhật. Bạn có thể sử dụng
node
"Google Sheets" để tìm số thứ tự của dòng dựa trên ID.
Trong "Values", nhập các giá trị cần cập nhật. Ví dụ:
Name: {{$node["Set"]["json"]["Name"]}}
Email: {{$node["Set"]["json"]["Email"]}}
Kết nối
node
"Webhook" với
node
"Set" và
node
"Set" với
node
"Google Sheets".
Thêm một
node
"Respond".
Node
này sẽ trả về thông báo thành công.
Kết nối
node
"Google Sheets" với
node
"Respond".
Kích hoạt workflow.
Kiểm Tra Cập Nhật Dữ Liệu (Update)
Sử dụng Postman hoặc cURL để gửi một PUT request đến URL Webhook với ID của dòng cần cập nhật và các giá trị mới. Ví dụ:
PUT http://localhost:5678/webhook/update?ID=1
{
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
```
Kiểm tra Google Sheet của bạn để xem dữ liệu đã được cập nhật chưa.
Bước 6: Xây Dựng Workflow Xóa Dữ Liệu (Delete)
Thêm một
node
"Webhook".
Trong
node
"Webhook", chọn method "DELETE".
Đặt path (ví dụ: /delete).
Lưu ý URL Webhook (ví dụ: http://localhost:5678/webhook/delete).
Thêm một
node
"Set".
Node
này sẽ lấy ID từ URL.
Thêm một thuộc tính "ID" với giá trị {{$parameter["ID"]}}.
Thêm một
node
"Google Sheets".
Kết nối
node
"Webhook" với
node
"Set" và
node
"Set" với
node
"Google Sheets".
Thêm một
node
"Respond".
Node
này sẽ trả về thông báo thành công.
Kết nối
node
"Google Sheets" với
node
"Respond".
Kích hoạt workflow.
Kiểm Tra Xóa Dữ Liệu (Delete)
Sử dụng Postman hoặc cURL để gửi một DELETE request đến URL Webhook với ID của dòng cần xóa. Ví dụ:
DELETE http://localhost:5678/webhook/delete?ID=1
```
Kiểm tra Google Sheet của bạn để xem dữ liệu đã được xóa chưa.
Kết Luận
Trong bài viết này, chúng ta đã cùng nhau tìm hiểu về n8n và xây dựng một ví dụ CRUD dữ liệu hoàn chỉnh sử dụng Google Sheets. Hy vọng bài viết này giúp bạn có một cái nhìn tổng quan về sức mạnh của n8n và có thể tự tin bắt đầu
xây dựng các workflow tự động hóa
của riêng mình.
Các Bước Tiếp Theo
Khám phá các node khác:
n8n có rất nhiều
node
khác nhau để kết nối với các ứng dụng và dịch vụ khác. Hãy khám phá và thử nghiệm các
node
này để mở rộng khả năng tự động hóa của bạn.
Tìm hiểu về expressions: Expressions cho phép bạn truy cập và thao tác dữ liệu giữa các
node
. Hãy tìm hiểu thêm về expressions để có thể xây dựng các workflow phức tạp hơn.
Tham gia cộng đồng n8n:
Cộng đồng n8n rất lớn và năng động. Hãy
tham gia cộng đồng
để
học hỏi kinh nghiệm
, chia sẻ kiến thức và nhận được sự hỗ trợ từ những người dùng khác.
Chúc bạn thành công trên hành trình khám phá và chinh phục n8n!