Beschreiben Sie das Problem/den Fehler/die Frage
Ich habe einen Node, der sich in zwei parallele Branches aufteilt. Jeder Branch beginnt mit einem Data Table “Get”-Node, und beide Get-Nodes erhalten genau dasselbe Input-Element vom gemeinsamen Parent-Node.
Einer dieser parallelen Get-Nodes funktioniert einwandfrei. Der andere führt sich einfach überhaupt nicht aus. Das Lustige daran ist, dass der einzige Unterschied zwischen den zwei Nodes die Tabelle ist, auf die sie verweisen. Alles andere ist identisch: gleicher Input, gleicher Vorgang, gleiche Einstellungen.
Ich habe bereits die offensichtlichen Dinge überprüft:
Die Tabelle, auf die der fehlerhafte Node verweist, wurde verifiziert und existiert.
Die Daten in dieser Tabelle wurden verifiziert, sie sind vorhanden.
Ich habe eine Bedingung (Filter) zum Node hinzugefügt, das half nicht.
Ich habe versucht, den Node auf der Canvas zu verschieben, das half nicht.
Ich verdächtigte, dass der Node einfach nicht genug Zeit zum Ausführen hatte (irgendeine Art Timing/Race), also habe ich das sorgfältig überprüft. Das ist nicht der Grund.
Ich habe den Node von Grund auf neu erstellt, das half nicht.
Ich habe ihn erneut mit der Tabelle verbunden, das half nicht.
Ich habe die Tabellenauswahl von „Aus Liste wählen
@pohgen es ist nicht der Node, sondern die Branch-Ausführungsreihenfolge von n8n. Seit v1.0 führt n8n parallele Branches nacheinander aus, von oben nach unten nach Canvas-Position, und beendet einen vollständig, bevor der nächste beginnt.
Validate Input verteilt auf drei Gets. n8n führt oben aus, dann das mittlere (Get Routing Rows) und all seine nachgelagerten Knoten einschließlich des Nodes, der $(‘Get Email Aliases’).all() macht, und erst dann den unteren Branch. So wird diese Referenz ausgelöst, bevor Get Email Aliases ausgeführt wurde, gibt leer zurück, und der Node sieht aus, als hätte er nie ausgeführt. Wenn du ihn etwa 10 Nodes nach unten verschiebst, landet er im Hauptbranch vor der Referenz, läuft also zuerst ab – das ist der Positionseffekt.
Lösung: Keine Referenzen über parallele Branches hinweg. Platziere Get Email Aliases inline vor dem Ort, wo du es nutzt, oder füge einen Merge-Node hinzu, damit alle Branches beendet sind, bevor irgendetwas nachgelagertes läuft – das empfiehlt auch n8n’s Dokumentation dafür.
Um das richtig zu beheben und deinen Workflow sauber zu halten, musst du n8n explizit mitteilen, dass die Daten aus den parallelen Branches benötigt werden, indem du sie wieder zusammenführst.
Füge einen Merge-Node nach deinen parallelen Branches hinzu.
Verbinde die Ausgabe deines “funktionierenden” Branch (z. B. Get All Candidate Templates) mit dem ersten Eingang des Merge-Node.
Verbinde die Ausgabe deines “fehlerhaften” Branch (z. B. Get Routing Rows) mit dem zweiten Eingang des Merge-Node.
Stelle den Merge-Node-Modus auf “Wait for all inputs to arrive” (oder “Combine”, wenn du Daten zusammenführst).
Platziere deinen nachgelagerten Node nach diesem Merge-Node.
Dadurch erstellst du eine physische Verbindung, die den Branch vor dem Löschen “schützt” und sicherstellt, dass die Engine ihn als notwendigen Teil der Ausführung erkennt.