我的 HTTP/API 節點生成多個項目,但這些項目通過我的 Code 節點後,輸出只包含一個項目。我使用 Code 節點來移除不必要的欄位並為另一個節點準備回應
說明問題/錯誤/問題
沒有執行錯誤,但項目計數從多個項目變為一個。應該如何編寫 Code 節點,以便處理和返回每個傳入項目
錯誤訊息是什麼(如果有的話)?
請分享您的工作流程
(選擇畫布上的節點,使用鍵盤快捷鍵 CMD+C/CTRL+C 和 CMD+V/CTRL+V 複製並貼上工作流程。)
分享最後一個節點返回的輸出
您的 n8n 設置資訊
- n8n 版本:1.123.x
- 資料庫(預設:SQLite):
- n8n EXECUTIONS_PROCESS 設置(預設:own、main):
- 運行 n8n 方式(Docker、npm、n8n cloud、desktop app):docker JavaScript
- 作業系統:
嘿 @Debby_Emupene,在等待回覆的同時,以下是一些可能有幫助的資源:
建議的資源
自動配對到您的問題。
文件:
論壇:
@Joy_Ful - 您之前曾協助解決過類似的問題,能否看一下?
由 n8n 社群機器人自動建議。這是一個試點 - 請在此分享回饋。
@Debby_Emupene 你好!
程式碼節點預設為對所有項目執行一次。在這種情況下,程式碼只會對整個批次執行一次。
- 保留節點並遍歷每個項目,如下所示 -
return $input.all().map(item => ({
json: {
id: item.json.id,
name: item.json.name,
// 只保留你需要的欄位
}
}));
- 與其使用方法 1,不如將模式切換為對每個項目執行一次,
return {
json: {
id: $json.id,
name: $json.name,
}
};
Hi @Debby_Emupene
使用「對所有項目執行一次」時,Code 節點會接收完整的集合,而 $input.all() 會傳回所有傳入的項目。你應該轉換該集合並傳回轉換後的陣列。
例如:
const inputItems = $input.all();
const outputItems = inputItems.map(item => ({
json: {
name: item.json.name,
email: item.json.email
}
}));
return outputItems;
重要的是 return 接收的是一個 n8n 項目的陣列,而不是單一項目。這樣可以讓下一個節點接收每筆已處理的 API 記錄。