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ạpkhô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:

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

  1. Tạo một Google Sheet mới.
  2. Đặt tên cho Sheet (ví dụ: n8n_crud).
  3. Thêm các cột tiêu đề (ví dụ: ID, Name, Email).

Bước 2: Tạo Credentials Google Sheets trong n8n

  1. Trong giao diện n8n, click vào "Credentials".
  2. Click vào "Create new".
  3. Chọn "Google Sheets".
  4. Đặt tên cho Credentials (ví dụ: Google Sheets Credentials).
  5. Click vào "Connect my Google Account".
  6. Làm theo hướng dẫn để cấp quyền cho n8n truy cập vào Google Sheets của bạn.
  7. Click vào "Create".

Bước 3: Xây Dựng Workflow Tạo Dữ Liệu (Create)

  1. Tạo một workflow mới.
  2. 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).
  3. 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"]}}
  4. Kết nối node "Webhook" với node "Google Sheets".
  5. 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)

  1. 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).
  2. 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"]}}.
  3. 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"]}}.
  4. Kết nối node "Webhook" với node "Set" và node "Set" với node "Google Sheets".
  5. 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"]}}.
  6. Kết nối node "Google Sheets" với node "Respond".
  7. 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)

  1. 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).
  2. 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"]}}).
  3. 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"]}}
  4. Kết nối node "Webhook" với node "Set" và node "Set" với node "Google Sheets".
  5. Thêm một node "Respond". Node này sẽ trả về thông báo thành công.
  6. Kết nối node "Google Sheets" với node "Respond".
  7. 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)

  1. 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).
  2. 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"]}}.
  3. Thêm một node "Google Sheets".
    • Trong node "Google Sheets", chọn Operation "Delete".
    • 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 xóa. Bạn có thể sử dụng node "Google Sheets" để tìm số thứ tự của dòng dựa trên ID.
  4. Kết nối node "Webhook" với node "Set" và node "Set" với node "Google Sheets".
  5. Thêm một node "Respond". Node này sẽ trả về thông báo thành công.
  6. Kết nối node "Google Sheets" với node "Respond".
  7. 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!

Read more