

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.

# BatchDeleteItem
<a name="js-aws-appsync-resolver-reference-dynamodb-batch-delete-item"></a>

Mit dem `BatchDeleteItem` Anforderungsobjekt können Sie die AWS AppSync DynamoDB-Funktion anweisen, eine `BatchWriteItem` Anforderung an DynamoDB zu stellen, um mehrere Elemente zu löschen, möglicherweise über mehrere Tabellen hinweg. Für dieses Anforderungsobjekt müssen Sie Folgendes angeben:
+ Die Namen der Tabellen, aus denen die Elemente gelöscht werden sollen.
+ Die Schlüssel der Elemente, die aus den einzelnen Tabellen gelöscht werden sollen.

Es gelten die DynamoDB `BatchWriteItem`-Grenzwerte, und es kann **kein Bedingungsausdruck** bereitgestellt werden.

Das `BatchDeleteItem` Anforderungsobjekt hat die folgende Struktur:

```
type DynamoDBBatchDeleteItemRequest = {
  operation: 'BatchDeleteItem';
  tables: {
    [tableName: string]: { [key: string]: any }[];
  };
};
```

Die Felder sind wie folgt definiert:

## BatchDeleteItem Felder
<a name="js-BatchDeleteItem-list"></a>

### BatchDeleteItem Liste der Felder
<a name="js-BatchDeleteItem-list-col"></a>

** `operation` **  
Der DynamoDB DynamoDB-Vorgang. Um die `BatchDeleteItem`-DynamoDB-Operation durchzuführen, muss diese auf `BatchDeleteItem` gesetzt sein. Dieser Wert ist erforderlich.

** `tables` **  
Die DynamoDB-Tabellen, aus denen die Elemente gelöscht werden sollen. Jede Tabelle ist eine Liste von DynamoDB-Schlüsseln, die den Primärschlüssel der zu löschenden Elemente darstellen. DynamoDB-Elemente können je nach Tabellenstruktur einen einzelnen Hashschlüssel oder einen Hashschlüssel und einen Sortierschlüssel haben. Weitere Informationen zur Angabe eines „typisierten Werts“ finden Sie unter [Typsystem (Anforderungszuordnung](https://docs.aws.amazon.com/appsync/latest/devguide/js-resolver-reference-dynamodb.html#js-aws-appsync-resolver-reference-dynamodb-typed-values-request)). Mindestens eine Tabelle muss angegeben werden. Der `tables` Wert ist erforderlich.

Beachten Sie Folgendes:
+ Im Gegensatz zum `DeleteItem`-Vorgang wird nicht das vollständig gelöschte Element in der Antwort zurückgegeben. Nur der übergebene Schlüssel wird zurückgegeben.
+ Wenn ein Element nicht aus der Tabelle gelöscht wurde, enthält der Datenblock für diese Tabelle ein *null*-Element.
+ Die Aufrufergebnisse werden nach Tabelle sortiert, basierend auf der Reihenfolge, in der sie innerhalb des Anforderungsobjekts bereitgestellt wurden.
+ Jeder `Delete` Befehl innerhalb von a `BatchDeleteItem` ist atomar. Ein Stapel kann jedoch teilweise verarbeitet werden. Wenn ein Stapel aufgrund eines Fehlers teilweise verarbeitet wird, werden die nicht verarbeiteten Schlüssel als Teil des Aufrufergebnisses im Block *unprocessedKeys* zurückgegeben.
+  `BatchDeleteItem` ist auf 25 Schlüssel beschränkt.
+ Dieser Vorgang **wird nicht** unterstützt, wenn er zusammen mit der Konflikterkennung verwendet wird. Wenn Sie beide gleichzeitig verwenden, kann dies zu einem Fehler führen.

Für das folgende Beispiel für einen Funktionsanforderungshandler:

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

export function request(ctx) {
  const { authorId, postId } = ctx.args;
  return {
    operation: 'BatchDeleteItem',
    tables: {
      authors: [util.dynamodb.toMapValues({ authorId })],
      posts: [util.dynamodb.toMapValues({ authorId, postId })],
    },
  };
}
```

Das in `ctx.result` verfügbare Aufrufergebnis sieht wie folgt aus:

```
{
   "data": {
     "authors": [null],
     "posts": [
        // Was deleted
        {
          "authorId": "a1",
          "postId": "p2"
        }
     ]
   },
   "unprocessedKeys": {
     "authors": [
        // This key was not processed due to an error
        {
          "authorId": "a1"
        }
      ],
     "posts": []
   }
}
```

`ctx.error` enthält die Einzelheiten zu dem Fehler. Die Schlüssel **data**, **unprocessedKeys und jeder Tabellenschlüssel**, der im Funktionsanforderungsobjekt bereitgestellt wurde, sind garantiert im Aufrufergebnis vorhanden. Elemente, die gelöscht wurden, befinden sich im Block **data**. Elemente, die nicht verarbeitet wurden, werden im Datenblock mit *null* markiert und im Block **unprocessedKeys** platziert.