

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Konfiguration und Verwendung von Pipeline-Resolvern in AWS AppSync () JavaScript
<a name="pipeline-resolvers-js"></a>

AWS AppSync führt Resolver auf einem GraphQL-Feld aus. In einigen Fällen müssen Anwendungen mehrere Operationen ausführen, um ein einziges GraphQL-Feld aufzulösen. Mit Pipeline-Resolvern können Entwickler jetzt Operationen, sogenannte Funktionen, zusammenstellen und sie nacheinander ausführen. Pipeline-Resolver sind nützlich für Anwendungen, die z. B. eine Autorisierungsprüfung ausführen müssen, bevor sie Daten für ein Feld abrufen.

Weitere Informationen zur Architektur eines JavaScript Pipeline-Resolvers finden Sie in der Übersicht über die [JavaScriptResolver](https://docs.aws.amazon.com/appsync/latest/devguide/resolver-reference-overview-js.html#anatomy-of-a-pipeline-resolver-js).

## Schritt 1: Einen Pipeline-Resolver erstellen
<a name="create-a-pipeline-resolver-js"></a>

Gehen Sie in der AWS AppSync Konsole zur **Schemaseite**.

Speichern Sie das folgende Schema:

```
schema {
    query: Query
    mutation: Mutation
}

type Mutation {
    signUp(input: Signup): User
}

type Query {
    getUser(id: ID!): User
}

input Signup {
    username: String!
    email: String!
}

type User {
    id: ID!
    username: String
    email: AWSEmail
}
```

Wir werden einen Pipeline-Resolver an das **signUp**-Feld mit dem Typ der **Mutation** anhängen. Wählen Sie im Bereich **Mutationstyp** auf der rechten Seite neben dem `signUp` Mutationsfeld die Option **Anhängen** aus. Stellen Sie den Resolver auf `pipeline resolver` und die `APPSYNC_JS` Laufzeit ein und erstellen Sie dann den Resolver.

Unser Pipeline-Resolver meldet einen Benutzer an, indem er zuerst die eingegebene E-Mail-Adresse validiert und den Benutzer dann im System speichert. **Wir werden die E-Mail-Validierung in einer **ValidateEmail-Funktion** und das Speichern des Benutzers in einer SaveUser-Funktion kapseln.** Die **validateEmail**-Funktion wird zuerst ausgeführt, und, sofern die E-Mail gültig ist, anschließend die **saveUser**-Funktion.

Der Ausführungsablauf wird wie folgt aussehen:

1. Anforderungshandler für Mutation.SignUp Resolver

1. Funktion validateEmail

1. Funktion saveUser

1. Antworthandler für den Mutation.SignUp-Resolver

Da wir die Funktion **validateEmail** wahrscheinlich in anderen Resolvern auf unserer API wiederverwenden werden, möchten wir den Zugriff vermeiden, `ctx.args` da sich diese von einem GraphQL-Feld zum anderen ändern. Wir können stattdessen `ctx.stash` verwenden, um das E-Mail-Attribut aus dem Eingabefeldargument `signUp(input: Signup)` zu speichern.

Aktualisieren Sie Ihren Resolver-Code, indem Sie Ihre Anfrage- und Antwortfunktionen ersetzen:

```
export function request(ctx) {
    ctx.stash.email = ctx.args.input.email
    return {};
}

export function response(ctx) {
    return ctx.prev.result;
}
```

Wählen Sie **Erstellen** oder **Speichern**, um den Resolver zu aktualisieren.

## Schritt 2: Eine Funktion erstellen
<a name="create-a-function-js"></a>

Klicken Sie auf der Pipeline-Resolver-Seite im Abschnitt **Funktionen** auf **Funktion hinzufügen** und dann auf **Neue Funktion erstellen**. Es ist auch möglich, Funktionen zu erstellen, ohne die Resolver-Seite aufrufen zu müssen. Rufen Sie dazu in der AWS AppSync Konsole die Seite **Funktionen** auf. Wählen Sie die Schaltfläche **Create function** (Funktion erstellen). Wir erstellen eine Funktion, die prüft, ob eine E-Mail gültig ist und von einer bestimmten Domäne stammt. Sofern die E-Mail nicht gültig ist, löst die Funktion einen Fehler aus. Andernfalls leitet sie sämtliche Eingaben weiter.

Stellen Sie sicher, dass Sie eine Datenquelle vom Typ **NONE** erstellt haben. Wählen Sie diese Datenquelle in der Liste **Datenquellenname** aus. Geben Sie für den **Funktionsnamen** in ein`validateEmail`. Überschreiben Sie im **Funktionscode-Bereich** alles mit diesem Snippet:

```
import { util } from '@aws-appsync/utils';

export function request(ctx) {
  const { email } = ctx.stash;
  const valid = util.matches(
    '^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(myvaliddomain)\.com',
    email
  );
  if (!valid) {
    util.error(`"${email}" is not a valid email.`);
  }

  return { payload: { email } };
}

export function response(ctx) {
  return ctx.result;
}
```

**Überprüfe deine Eingaben und wähle dann Erstellen.** Wir haben unsere **validateEmail**-Funktion erstellt. Wiederholen Sie diese Schritte, um die **SaveUser-Funktion** mit dem folgenden Code zu erstellen (Der Einfachheit halber verwenden wir eine **NONE-Datenquelle** und tun so, als ob der Benutzer nach der Ausführung der Funktion im System gespeichert wurde. ):

```
import { util } from '@aws-appsync/utils';

export function request(ctx) {
  return ctx.prev.result;
}

export function response(ctx) {
  ctx.result.id = util.autoId();
  return ctx.result;
}
```

Wir haben gerade unsere **SaveUser-Funktion** erstellt.

## Schritt 3: Hinzufügen einer Funktion zu einem Pipeline-Resolver
<a name="adding-a-function-to-a-pipeline-resolver-js"></a>

Unsere Funktionen hätten automatisch zu dem gerade erstellten Pipeline-Resolver hinzugefügt werden sollen. **Wenn dies nicht der Fall war oder Sie die Funktionen über die Funktionsseite erstellt haben, können Sie auf der `signUp` Resolver-Seite wieder auf **Funktion hinzufügen** klicken, um sie anzuhängen.** Fügen Sie dem Resolver sowohl die Funktionen **validateEmail** als auch **saveUser** hinzu. Die Funktion **validateEmail** muss vor der Funktion **saveUser** platziert werden. Wenn Sie weitere Funktionen hinzufügen, können Sie die Optionen „**Nach oben“ und „Nach** **unten“ verwenden,** um die Reihenfolge der Ausführung Ihrer Funktionen neu zu organisieren. Überprüfen Sie Ihre Änderungen und wählen Sie dann **Speichern**.

## Schritt 4: Eine Abfrage ausführen
<a name="running-a-query-js"></a>

Rufen Sie in der AWS AppSync Konsole die Seite **Abfragen** auf. Stellen Sie im Explorer sicher, dass Sie Ihre Mutation verwenden. Wenn nicht, wählen Sie `Mutation` in der Drop-down-Liste und dann`+`. Geben Sie die folgende Abfrage ein:

```
mutation {
  signUp(input: {email: "nadia@myvaliddomain.com", username: "nadia"}) {
    id
    username
  }
}
```

Dies sollte etwa Folgendes zurückgeben:

```
{
  "data": {
    "signUp": {
      "id": "256b6cc2-4694-46f4-a55e-8cb14cc5d7fc",
      "username": "nadia"
    }
  }
}
```

Wir haben mit einem Pipeline-Resolver unseren Benutzer erfolgreich angemeldet und die eingegebene E-Mail validiert.