N8n102 - 實作練習:由Webhook驅動的訂單處理系統

我在步驟 3.11:測試並取得您的確認代碼。 之前我在 Webhook 測試器中通過了測試 1 和測試 2。我不知道為什麼我回到了步驟 1 測試,它出現了錯誤(見圖 1)。我在「OrderExists」IF 節點中出現錯誤。錯誤顯示類型錯誤(見圖2),但在說明中說我應該設置類型為 STRING(見圖3)

我檢查了所有說明,看看是否遺漏了什麼,但找不到。有人之前卡在這種情況嗎?

嗨 @leomel!這是新 IF 節點(v2)的經典問題,你自己的 OUTPUT 截圖已經給了你線索:「Wrong type: ‘7’ is a number but was expecting a string」。訂單 ID 以數字(7)的形式送來,但條件以文字比較它,而且預設情況下,IF 會以嚴格方式驗證類型:它卡在那裡,執行失敗,所以才把你送回測試 1(「Valid order returns 200」永遠沒機會通過)。

有兩種方式可以修復,任選其一:

  1. 在條件本身中,勾選「Convert types where required」核取方塊(就在欄位下方,就是你第 2 張截圖出現的那個)。按照練習要求將類型保持為 String,n8n 會自動轉換這個 7。
  2. 或者在第一個欄位的表達式中強制轉換成文字:{{ $json.id.toString() }}。
  3. 我第一次也被 IF v2 這招坑了:你以為「is empty」就是比較,完事了,但它對 number 和 string 非常講究。用了「Convert types where required」之後就再也沒出過問題。

一個問題來縮小範圍:錯誤只在「OrderExists」這個 IF 裡跳出,還是流程中的其他某個 IF 也丟出同樣的「wrong type」?告訴我,我們繼續。我是自學的,更多時間砲火連天,但這個特定的問題我踩過 :slightly_smiling_face:

謝謝!我試著回顧所有的節點和指令。我發現在圖片 3 中,值應該是 {{ $json.order_id }},而不是 {{ $json.id }}。這就是為什麼它期望是字符串。現在在工作流程和子工作流程的執行選項卡中都沒有錯誤了,但 Webhook 測試器中的步驟 1 測試仍然有與圖片 1 中相同的錯誤。我不知道為什麼執行選項卡中沒有錯誤,但那裡卻有。我還在試著弄清楚。希望我能在失去理智之前通過這第二次動手練習課程 lol。順便說一下,感謝你的幫助,真的非常感謝。