So deduplizieren Sie eine Liste von Stellenangeboten aus einer API-Antwort innerhalb derselben Payload

Beschreibe das Problem/den Fehler/die Frage

Jede Vakanz hat eine eindeutige external_id, aber einige erscheinen mehrmals in derselben API-Antwort.

Mein Ziel:

Genau ein Element aus jeder Vakanz zulassen
Duplikate innerhalb desselben Payloads filtern
Ohne eine Supabase-Überprüfung, da die Datenbank noch leer ist

Ich verwende einen Code-Knoten im Modus „Einmal für alle Elemente ausführen", um Duplikate zu erkennen.

Welche Fehlermeldung erscheint (falls vorhanden)?

Bitte teile deinen Workflow

(Wähle die Knoten auf deiner Canvas aus und verwende die Tastaturkürzel CMD+C/STRG+C und CMD+V/STRG+V, um den Workflow zu kopieren und einzufügen.)

Teile die Ausgabe des letzten Knotens

Informationen zu deinem n8n-Setup

  • n8n-Version:
  • Datenbank (Standard: SQLite):
  • n8n-EXECUTIONS_PROCESS-Einstellung (Standard: own, main):
  • n8n wird ausgeführt über (Docker, npm, n8n cloud, Desktop-App):
  • Betriebssystem:

@haajj3012 Code-Knoten im Modus „Run Once for All Items

Hey @haajj3012,
@achamm’s Code funktioniert perfekt. Ich füge nur eine
No-Code-Option hinzu, falls du es lieber visuell im
Workflow halten möchtest:

n8n hat einen integrierten Remove Duplicates-Node, der genau
das macht, ohne dass du JavaScript schreiben musst. Setup:

  1. Drop einen Remove Duplicates-Node nach deinem API-Call
  2. Operation: „Remove Items With Same Field Value"
  3. Compare Field: external_id

Das filtert das Array auf eindeutige Elemente in einem Node herunter, einfacher
zu erkennen auf der Canvas später, wenn du debuggst.

Es gibt ein paar kleine Edge Cases, die es wert sind, bei deinem Ansatz zu beachten:

  • Falls external_id jemals auf manchen Elementen fehlt oder null ist, werden beide
    der Code und der Node alle Nulls als Duplikate
    voneinander behandeln. Normalerweise kein Problem, aber wenn du Nulls behalten möchtest,
    füge einen Filter vor dem Dedup-Schritt hinzu, um sie zu trennen.
  • Falls die API die ID mal als Zahl bei manchen Elementen
    und als String bei anderen zurückgibt, werden beide Ansätze „123"
    und 123 als unterschiedlich behandeln. Ein schnelles String(item.json.external_id)
    im Code (oder ein Set-Node zum Normalisieren des Typs) behebt das.

Da du erwähnt hast, dass Supabase später kommt — wenn du es dann hinzufügst,
ist das sauberste Pattern, zuerst innerhalb des Payloads zu deduplizieren
(das machst du ja jetzt), dann gegen Supabase als
zweiter Schritt zu deduplizieren. Hält die Logik sauber und ermöglicht dir,
jede Ebene unabhängig zu testen.

Großartige Antworten von @achamm und @Dharmendra_Kumar – das Set + filter Pattern im Code node ist solide, und die visuelle Option mit Remove Duplicates ist genau richtig für diesen Use-Case.

Da n8n dieses Szenario bereits sehr gut out-of-the-box unterstützt, würde ich persönlich hier einen Code node vermeiden und mich vollständig auf den built-in node verlassen. Das macht den Workflow leichter lesbar und ist in der Regel auf lange Sicht stabiler.

Für dein spezifisches Ziel („genau ein Item pro external_id innerhalb desselben Payload, DB noch leer