嗨,大家今天過得好嗎?歡迎來到鐵人賽 Day 14。
昨天我們成功連上了 PostgreSQL,靠著參數化查詢安全地撈出了硬體資料。但老實說,目前的流程還太過於「直線思考」。
在真實的組電腦商業邏輯中,我們不可能一招打天下。前端 SwiftUI 傳來的 purpose(用途)有三種:「3A 遊戲」、「影音剪輯」和「文書處理」。
如果在傳統後端寫 Code,這裡絕對是一大坨的 if-else 或 switch-case,裡面包著各種不同的 SQL Query。今天,我要教你如何在 n8n 中,不寫一行邏輯代碼,直接用「拉線」的方式完成漂亮的資料分流。
很多人剛用 n8n 時,遇到判斷條件第一直覺就是拉 If 節點。
If 節點很好用,但它只有兩個出口:True 跟 False。當我們有三種用途要判斷時,你就得在 False 後面再接一個 If... 畫布很快就會變成難以閱讀的毛線球。
對於這種「一對多」的條件判斷,我們的最佳武器是 Switch 節點。
String。{{ $json.purpose }}。3A 遊戲,輸出到 Output 0。影音剪輯,輸出到 Output 1。文書處理,輸出到 Output 2。設定好之後關閉視窗,你會看到 Switch 節點的右邊長出了三個不同 Output 節點出口。
現在,你的工作流已經長出了三個分支。你可以複製三個昨天的 PostgreSQL 節點,分別接在 Switch 的三個出口上。
最棒的地方來了:每一個分支裡的 Postgres 節點,都可以寫不同的 SQL 邏輯。
例如,在 Output 0 (3A 遊戲) 的分支,你的 SQL 參數可以這樣設計:
-- 遊戲機:GPU 預算佔 50%,CPU 佔 30%
SELECT * FROM gpus WHERE price <= ($1 * 0.5) ORDER BY price DESC LIMIT 3;
而在 Output 2 (文書處理) 的分支,你可以直接暴力阻擋:
-- 文書機:不需要獨立顯卡,直接撈有內顯的 CPU 就好
SELECT * FROM cpus WHERE has_integrated_graphics = true AND price <= $1 ORDER BY price DESC LIMIT 3;
你完全不需要在程式碼裡寫什麼 if purpose == "3A 遊戲" 的判斷,在 n8n 裡,資料走到哪條線,它就該做什麼事。視覺化工作流的魅力,就是在除錯時,你只要看哪條線在發光,就知道現在走到哪個邏輯分支了。
工作流分支出去後,最終我們還是得把撈出來的 CPU 與 GPU 資料打包好,然後把這份「硬體清單」送進我們接下來要準備的 AI 大腦裡。
如果你放任三條線各自走到結尾,你可能得做三個 LLM 節點,這在維護上會是個災難。實務上,我們會在各個分支撈完專屬的資料後,使用一個叫做 Merge 的節點,把這三條線路重新「收斂」成一條主線,然後再統一送給下一步的 AI 去處理。
今天我們學會了用 Switch 節點取代繁雜的程式碼條件判斷,讓商業邏輯的分流變得一目了然。我們的後端終於具備了「因地制宜」的處理能力。
到目前為止,我們的資料來源都只限於我們自己的 Postgres 資料庫。但如果哪天資料庫的時價沒更新,或是我們想額外提供「今日原價屋最新匯率 / 折扣」給 AI 參考怎麼辦?
明天,我們暫時不寫 SQL,要來玩玩 n8n 裡被使用頻率最高的萬用神器——HTTP Request 節點。看看怎麼不寫半行 Code,就能串接外部第三方 API 來豐富我們的資料庫!
我們 Day 15 見!