您好,
在工作流中,我在執行開始時在「編輯欄位」節點中存儲值。其餘工作流運行約兩分鐘,最後,我從該「編輯欄位」節點中檢索其中一個值。問題是我收到該欄位的「undefined」消息——就好像儲存的值有有限的生命週期。
€# 關於您的 n8n 設置的資訊
- n8n 版本: 2.29.9
- 資料庫(預設:SQLite):
- n8n EXECUTIONS_PROCESS 設定(預設:own, main):
- 透過以下方式執行 n8n(Docker、npm、n8n cloud、桌面應用): Docker
- 作業系統: Linux Fedora
嘿!在 n8n 中,數值不會過期,所以不是這個問題。
真正的問題可能是你在分支之間或合併後失去了參考。試試將你的表達式改為:
{{ $('Edit Fields').first().json.yourField }}
.first() 強制 n8n 始終從原始輸出中抓取數據,無論你在工作流程中的哪個位置。這通常能解決問題!
嗨 @flipflip
如果 Wait 節點暫停執行兩分鐘,這就是導致 undefined 的原因:n8n 會在執行到等待時保存執行狀態,並在恢復時重新加載它,因此像 $('Edit Fields').item 這樣的後向引用指向等待之前的節點,在重新加載後不能可靠地保存。Wait 節點會直接傳遞其輸入,因此應該將欄位帶到項目上,而不是跨越等待進行回溯。在 Edit Fields 節點中開啟 Include Other Input Fields,這樣該值就會隨著項目進入 Wait 節點,然後在等待後使用以下方式讀取它:
{{ $json.yourField }}
嗨,感謝你的回覆。
以下是我的工作流程簡化版本。“setVar” 節點在開始時實例化時沒有錯誤。工作流程運行順利,只有在最後一個節點才需要在 “setVar” 中指定的 “mail” 值。前面的兩個節點僅供說明之用。
錯誤
Problem in node 'Send an Email'
No recipients defined
嗨 @flipflip
在「傳送電子郵件」節點中,你有 {{ $('setVar').first().item.json.mail }}。.first() 已經返回項目,所以將 .item 連接到它會解析為未定義,toEmail 最終為空,節點報告「未定義收件人」。移除 .item:
{{ $('setVar').first().json.mail }}
如果仍然為空,位址從未進入 setVar:它的 mail 指派從 getMail 讀取 {{ $json.mail }},所以打開 setVar 的輸出並確認欄位確實在那裡保存了位址。