Seitenhierarchie
Zum Ende der Metadaten springen
Zum Anfang der Metadaten

In GraphQL gibt es den Feld-Typ Enum. Dieser zeichnet sich durch einen selbst definierbaren Werte-Bereich aus, der auch entsprechend geprüft wird. Das hat im Gegensatz zu Strings den Vorteil, dass man nur einen der vorgegebenen Werte nutzen kann, und diese aber eben auch per Introspection ermitteln kann. Da zu jeden Wert auch eine Beschreibung abgefragt werden kann, ist es hierdurch möglich im externen System Auswahl-Felder zu generieren.

Nachteil die Enum-Typen ist allerdings, dass die Werte nach einem Bestimmten Muster aufgebaut sein müssen: Es dürfen keine Leer- oder sonstigen Sonderzeichen enthalten sein (Ausnahme ist der Unterstrich "_") und sie dürfen nicht mit einer Ziffer beginnen.

Wie ermittle ich die Werte, die ich bei einem Enum-Typen nutzen kann?

Die möglichen Werte eines Enum-Typs können per Introspection ermittelt werden. Dazu ist eine Abfragen notwendig, die wie folgt aufgebaut werden muss:

Introspection Query zum Ermitteln von Enum-Werten
{
  __type(name: "<Name des Enum-Typs>") {
    kind
    description
    enumValues {
      name
      description
    }
  }
}

Hierbei muss als Wert für das Feld name der Name des abzufragenden Enum-Typen übergeben werden.


Beispiele

Beispiel Enum Werte Zahlungsmethoden
{
  __type(name: "PaymentMethodEnum") {
    kind
    description
    enumValues {
      name
      description
    }
  }
}
Mögliches Ergebnis der Abfrage
{
  "data": {
    "__type": {
      "kind": "ENUM",
      "description": "Payment method enum",
      "enumValues": [
        {
          "name": "PaymentOnAccount",
          "description": "Rechnung"
        },
        {
          "name": "Cash",
          "description": "Barzahlung"
        },
        {
          "name": "AdvancePayment",
          "description": "Vorauszahlung"
        },
        {
          "name": "CashOnDelivery",
          "description": "Nachnahme"
        },
        {
          "name": "DircetDebit",
          "description": "SEPA Lastschrift"
        },
        {
          "name": "Paypal",
          "description": "PayPal"
        },
        {
          "name": "Mollie",
          "description": "mollie"
        },
        {
          "name": "Sofort",
          "description": "Klarna Sofortüberweisung (Sofort GmbH)"
        }
      ]
    }
  }
}
Beispiel Enum Werte Produkttyp
{
  __type(name: "ProductTypeEnum") {
    kind
    description
    enumValues {
      name
      description
    }
  }
}



Den Namen eines Enum-Typen können Sie in der Dokumentation finden. Beispiel:

Verwandte Artikel