我的 HTTP/API 節點產生多個項目,但這些項目通過我的程式碼節點後,輸出只包含一個項目

我的 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 你好!

程式碼節點預設為對所有項目執行一次。在這種情況下,程式碼只會對整個批次執行一次。

  1. 保留節點並遍歷每個項目,如下所示 -

return $input.all().map(item => ({
json: {
id: item.json.id,
name: item.json.name,
// 只保留你需要的欄位
}
}));

  1. 與其使用方法 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 記錄。