Skip to main content

Item Management

Items sind die grundlegenden Dateneinheiten in Automate-Workflows. Jedes Item repräsentiert einen Datensatz, der durch die verschiedenen Nodes des Workflows fließt. Effektives Item Management ist entscheidend für robuste und wartbare Workflows.

Was sind Items?

Items sind JSON-Objekte, die Daten zwischen Nodes transportieren. Jeder Node kann Items empfangen, verarbeiten und neue Items ausgeben.

Item-Struktur

Jedes Item ist ein JSON-Objekt mit Feldern:
{
  "json": {
    "field1": "value1",
    "field2": "value2"
  },
  "binary": {},
  "pairedItem": {}
}

Item-Flow

Items fließen durch den Workflow:
Trigger → Node 1 → Node 2 → Node 3
(Item)   (Item)    (Item)   (Item)

Item-Zugriff

Auf Item-Daten zugreifen

Standard-Zugriff auf aktuelle Item-Daten:
// Zugriff auf JSON-Felder
{{ $json.fieldName }}

// Verschachtelte Felder
{{ $json.user.email }}

// Array-Zugriff
{{ $json.items[0].name }}

// Mit Null-Check
{{ $json.user?.email || 'default@example.com' }}

Auf vorherige Nodes zugreifen

Zugriff auf Items von spezifischen Nodes:
// Zugriff auf Daten eines bestimmten Nodes
{{ $('Node Name').item.json.fieldName }}

// Erstes Item eines Nodes
{{ $('HTTP Request').first().json.data }}

// Letztes Item eines Nodes
{{ $('HTTP Request').last().json.data }}

// Alle Items eines Nodes
{{ $('HTTP Request').all() }}

Item-Manipulation

Set Node - Felder setzen und ändern

Der Set Node ist der primäre Weg zur Item-Manipulation:
Felder setzen:
{
  "values": {
    "fullName": "={{ $json.firstName }} {{ $json.lastName }}",
    "email": "={{ $json.email }}",
    "timestamp": "={{ $now.toISO() }}"
  }
}
Felder umbenennen:
{
  "values": {
    "userEmail": "={{ $json.email }}",
    "userName": "={{ $json.name }}"
  },
  "options": {
    "keepOnlySet": true
  }
}
Felder entfernen:
{
  "values": {
    "email": "={{ undefined }}",
    "password": "={{ undefined }}"
  }
}

Merge Node - Items kombinieren

Kombinieren Sie Daten aus verschiedenen Quellen:
Merge Node verwenden:
Node A ┐
Node B ├→ Merge → Kombiniertes Item
Node C ┘
{
  "mode": "mergeByIndex",
  "options": {}
}
Verschiedene Merge-Strategien:
  • mergeByIndex: Kombiniert Items basierend auf Index
  • mergeByKey: Kombiniert basierend auf Schlüsselfeld
  • append: Fügt alle Items zu einem Array hinzu
  • multiplex: Erstellt Kombinationen aller Items

Function Node - Komplexe Manipulationen

Für komplexe Item-Transformationen:
// Komplexe Transformation
const items = $input.all();

const transformedItems = items.map(item => {
  return {
    json: {
      id: item.json.id,
      fullName: `${item.json.firstName} ${item.json.lastName}`,
      email: item.json.email.toLowerCase(),
      processedAt: new Date().toISOString(),
      metadata: {
        originalData: item.json
      }
    }
  };
});

return transformedItems;

Item-Filterung

Filter Node - Items filtern

Filtern Sie Items basierend auf Bedingungen:
Filter Node konfigurieren:
{
  "conditions": {
    "string": [
      {
        "value1": "={{ $json.status }}",
        "operation": "equals",
        "value2": "active"
      }
    ]
  }
}
Mehrere Bedingungen:
{
  "conditions": {
    "options": {
      "caseSensitive": true,
      "leftValue": "",
      "typeValidation": "strict"
    },
    "string": [
      {
        "value1": "={{ $json.status }}",
        "operation": "equals",
        "value2": "active"
      },
      {
        "value1": "={{ $json.amount }}",
        "operation": "larger",
        "value2": 100
      }
    ]
  }
}

IF Node - Bedingte Verarbeitung

Verzweigen Sie Items basierend auf Bedingungen:
// Einfache Bedingung
{{ $json.userType === 'premium' }}

// Komplexe Bedingung
{{ $json.status === 'active' && $json.balance > 0 }}

// Mit Null-Check
{{ $json.user?.subscription?.active === true }}

Item-Transformation

Datentypen konvertieren

Konvertieren Sie Datentypen zwischen Nodes:
// String zu Number
{{ parseInt($json.price) }}
{{ parseFloat($json.amount) }}
{{ Number($json.count) }}

// Number zu String
{{ String($json.id) }}
{{ $json.id.toString() }}
// ISO String zu Date
{{ new Date($json.createdAt) }}

// Date zu ISO String
{{ new Date().toISOString() }}

// Formatierte Datum-String
{{ new Date($json.date).toLocaleDateString('de-DE') }}
// Array erstellen
{{ [$json.item1, $json.item2, $json.item3] }}

// Array filtern
{{ $json.items.filter(item => item.status === 'active') }}

// Array mappen
{{ $json.items.map(item => item.id) }}

// Array reduzieren
{{ $json.items.reduce((sum, item) => sum + item.amount, 0) }}

Item-Validierung

Datenvalidierung

Validieren Sie Items vor der Verarbeitung:
// E-Mail-Format prüfen
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
{{ emailRegex.test($json.email) }}

Best Practices

Konsistente Feldnamen

Verwenden Sie konsistente Namenskonventionen für Felder über den gesamten Workflow hinweg.

Null-Checks

Implementieren Sie immer Null-Checks für verschachtelte Felder: {{ $json.user?.email }}

Frühe Validierung

Validieren Sie Items so früh wie möglich im Workflow, nicht erst am Ende.

Dokumentation

Dokumentieren Sie die Item-Struktur, die jeder Node erwartet und produziert.

Transformation isolieren

Nutzen Sie Set Nodes für klare Transformationen, nicht komplexe Expressions in anderen Nodes.

Performance

Vermeiden Sie unnötige Item-Kopien. Nutzen Sie keepOnlySet wo möglich.

Häufige Patterns

Pattern 1: Item-Enrichment

Anreichern Sie Items mit zusätzlichen Daten:
Trigger → Get Base Data → Enrich with API → Merge → Output
// Schritt 1: Basis-Daten
{ "userId": 123, "name": "Max" }

// Schritt 2: API-Daten abrufen
{ "email": "max@example.com", "role": "admin" }

// Schritt 3: Zusammenführen
{
  "userId": 123,
  "name": "Max",
  "email": "max@example.com",
  "role": "admin"
}

Pattern 2: Item-Normalisierung

Normalisieren Sie Items für konsistente Verarbeitung:
// Verschiedene Input-Formate
{ "first_name": "Max", "last_name": "Mustermann" }
{ "firstName": "Max", "lastName": "Mustermann" }

// Normalisiertes Format
{
  "firstName": "={{ $json.first_name || $json.firstName }}",
  "lastName": "={{ $json.last_name || $json.lastName }}",
  "fullName": "={{ $json.firstName }} {{ $json.lastName }}"
}

Pattern 3: Item-Splitting

Teilen Sie komplexe Items in einfachere auf:
// Input: Ein Item mit Array
{
  "orderId": 123,
  "items": [
    { "productId": 1, "quantity": 2 },
    { "productId": 2, "quantity": 1 }
  ]
}

// Output: Mehrere Items
// Item 1
{ "orderId": 123, "productId": 1, "quantity": 2 }

// Item 2
{ "orderId": 123, "productId": 2, "quantity": 1 }

Checkliste

  • Item-Struktur ist dokumentiert
  • Null-Checks sind implementiert
  • Datentypen sind konsistent
  • Validierung erfolgt früh im Workflow
  • Feldnamen folgen Namenskonventionen
  • Items werden nicht unnötig kopiert
  • Transformationen sind klar und nachvollziehbar

Nächste Schritte


Tipp: Verwenden Sie den Expression Editor, um Item-Zugriffe zu validieren. Die Autovervollständigung zeigt verfügbare Felder an.