n8n是一款強大的開源工作流自動化工具,可以幫助你將各種服務和應用程序連接起來,創建復雜的自動化流程。下面我將詳細介紹一個實用的n8n用例:從MySQL數據庫查詢數據并發送郵件通知,包括使用場景、搭建步驟和節點部署方法。
使用場景
場景描述:假設你是一家電商公司的運營人員,需要每天上午10點檢查庫存量低于警戒值的商品,并自動發送郵件通知采購部門及時補貨。
工作流功能:
-
定時觸發工作流(每天上午10點)
-
連接MySQL數據庫查詢庫存數據
-
篩選出庫存量低于警戒值的商品
-
將查詢結果格式化為易讀的HTML表格
-
通過SMTP服務發送郵件給采購部門
這個自動化流程可以節省每天手動查詢和發送郵件的時間,確保補貨通知及時準確。
搭建步驟
1. 部署n8n
n8n有多種部署方式,以下是兩種常見方法:
方法一:使用Docker快速部署(適合本地測試)
bash
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n docker.n8n.io/n8nio/n8n
部署完成后,訪問?http://localhost:5678
?即可進入n8n界面。
方法二:使用Railway和Supabase零成本搭建(適合生產環境)
-
在Supabase創建數據庫項目,記錄連接信息
-
在GitHub創建倉庫并添加簡單的Dockerfile
-
在Railway部署項目,關聯GitHub倉庫
-
設置環境變量(數據庫連接、加密密鑰等)
-
配置自定義域名(可選)
2. 創建工作流
-
登錄n8n后,點擊"Add workflow"創建新工作流
-
點擊右上角的"Workflow settings"設置工作流名稱和描述
部署節點與配置
以下是完整的工作流節點配置步驟:
節點1:Cron定時觸發器
-
從左側面板拖拽"Cron"節點到畫布
-
配置屬性:
-
Mode: Every Day
-
Hour: 10
-
Minute: 0
-
-
這個節點會在每天上午10點自動觸發工作流
節點2:MySQL數據庫查詢
-
添加"MySQL"節點并連接到Cron節點
-
點擊"Create new credential"配置數據庫連接:
-
Host: 數據庫服務器地址
-
Database: 數據庫名稱
-
User: 數據庫用戶名
-
Password: 數據庫密碼
-
Port: 3306(默認)
-
-
在Operation中選擇"Select"
-
在Query中填寫SQL語句:
sql
SELECT product_id, product_name, current_stock, alert_stock FROM products WHERE current_stock < alert_stock
節點3:IF條件判斷(可選)
-
添加"IF"節點連接到MySQL節點
-
配置條件判斷是否有低庫存商品:
-
條件1:?
{{$node["MySQL"].json["length"] > 0}}
-
這樣當查詢結果為空時,工作流會終止而不發送空郵件
-
節點4:HTML格式化
-
添加"Function"節點連接到IF節點(True分支)
-
編寫JavaScript代碼將查詢結果格式化為HTML表格:
javascript
const items = $input.all();let html = `<h2>低庫存商品警報</h2><p>以下商品需要及時補貨:</p><table border="1" cellpadding="5" cellspacing="0"><tr><th>商品ID</th><th>商品名稱</th><th>當前庫存</th><th>警戒庫存</th></tr> `;items.forEach(item => {html += `<tr><td>${item.product_id}</td><td>${item.product_name}</td><td>${item.current_stock}</td><td>${item.alert_stock}</td></tr>`; });html += `</table>`;return [{ html }];
節點5:郵件發送
-
添加"Email (SMTP)"節點連接到Function節點
-
點擊"Create new credential"配置SMTP服務:
-
User: 發件郵箱
-
Password: 郵箱密碼或授權碼
-
Host: SMTP服務器地址(如smtp.gmail.com)
-
Port: 465(SSL)或587(TLS)
-
Secure: true(SSL)或false(TLS)
-
-
配置郵件內容:
-
From: 發件人郵箱
-
To: 收件人郵箱(如proxy@tiktoksim.com)
-
Subject: "每日代理IP報告 - {{$now.format('YYYY-MM-DD')}}"
-
Email Type: HTML
-
Message:?
{{$node["Function"].json["html"]}}
-
測試與調試
-
點擊右上角的"Execute workflow"手動測試工作流
-
檢查每個節點的輸出是否符合預期:
-
MySQL節點應返回查詢結果
-
Function節點應生成正確的HTML
-
Email節點應成功發送郵件
-
-
在節點的"Options"中啟用"Always Output Data"可以查看節點處理的數據
高級優化
1. 分批處理大數據
如果查詢結果很多,可以使用"SplitInBatches"節點分批發送郵件,避免單封郵件過大:
-
在MySQL和Function節點之間添加"SplitInBatches"節點
-
設置Batch Size為10(每封郵件包含10條記錄)
-
將Email節點連接到SplitInBatches節點
2. 錯誤處理
-
添加"Error Trigger"節點捕獲工作流中的錯誤
-
配置錯誤通知方式(如發送到Slack或另一封郵件)
3. 數據持久化
-
使用Supabase作為n8n的數據庫(替代默認的SQLite)
-
配置環境變量:
env
DB_TYPE=postgresdb DB_POSTGRESDB_DATABASE=your_db_name DB_POSTGRESDB_HOST=your_supabase_host DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_USER=postgres DB_POSTGRESDB_PASSWORD=your_password
這樣可以確保工作流數據和憑證在重啟后不會丟失
部署到生產環境
如果使用Railway部署n8n,可以:
-
在Railway的項目設置中添加所有必要的環境變量
-
配置自定義域名(如n8n.tiktoksim.com)
-
設置N8N_ENCRYPTION_KEY環境變量,確保憑證加密安全
-
啟用EXECUTIONS_DATA_PRUNE自動清理舊數據,防止數據庫過大
擴展應用
這個基礎工作流可以進一步擴展:
-
多通知渠道:添加Slack、企業微信等通知方式
-
自動補貨:連接采購系統API,當庫存低于警戒值時自動創建采購訂單
-
數據分析:將查詢結果保存到Google Sheets或Notion,形成歷史記錄
-
AI增強:使用MCP節點接入大模型,讓AI分析庫存趨勢并給出補貨建議
總結
通過這個用例,我們展示了如何使用n8n構建一個完整的自動化工作流,從數據庫查詢到郵件通知。n8n的強大之處在于:
-
可視化編排:無需編寫復雜代碼即可連接各種服務
-
豐富的節點庫:支持數百種常見應用和服務
-
靈活部署:可以在本地Docker運行,也可以部署到云平臺
-
擴展性強:可以通過社區節點或自定義代碼擴展功能