BatchGetItem - AWS AppSync GraphQL

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.

BatchGetItem

Mit dem BatchGetItem Anforderungsobjekt können Sie die AWS AppSync DynamoDB-Funktion anweisen, eine BatchGetItem Anforderung an DynamoDB zu stellen, um mehrere Elemente abzurufen, möglicherweise über mehrere Tabellen hinweg. Für dieses Anforderungsobjekt müssen Sie Folgendes angeben:

  • Die Namen der Tabellen, aus denen die Elemente abgerufen werden sollen.

  • Die Schlüssel der Elemente, die aus den einzelnen Tabellen abgerufen werden sollen.

Es gelten die DynamoDB BatchGetItem-Grenzwerte, und es kann kein Bedingungsausdruck bereitgestellt werden.

Das BatchGetItem Anforderungsobjekt hat die folgende Struktur:

type DynamoDBBatchGetItemRequest = { operation: 'BatchGetItem'; tables: { [tableName: string]: { keys: { [key: string]: any }[]; consistentRead?: boolean; projection?: { expression: string; expressionNames?: { [key: string]: string }; }; }; }; };

Die Felder sind wie folgt definiert:

BatchGetItem Felder

operation

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

tables

Die DynamoDB-Tabellen, aus denen die Elemente abgerufen werden sollen. Der Wert ist eine Zuweisung, in der Tabellennamen als Schlüssel der Zuweisung angegeben werden. Mindestens eine Tabelle muss angegeben werden. Dieser tables-Wert ist erforderlich.

keys

Liste der DynamoDB-Schlüssel, die den Primärschlüssel der abzurufenden 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).

consistentRead

Ob bei der Ausführung eines GetItemVorgangs ein konsistenter Lesevorgang verwendet werden soll. Dieser Wert ist optional und ist standardmäßig false.

projection

Eine Projektion, die verwendet wird, um die Attribute anzugeben, die von der DynamoDB-Operation zurückgegeben werden sollen. Weitere Informationen zu Projektionen finden Sie unter Projektionen. Dies ist ein optionales Feld.

Beachten Sie Folgendes:

  • Wenn ein Element nicht aus der Tabelle abgerufen 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 Get Befehl innerhalb von a BatchGetItem ist atomar, ein Batch 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.

  • BatchGetItem ist auf 100 Schlüssel beschränkt.

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: 'BatchGetItem', 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 retrieved { "authorId": "a1", "postId": "p2", "postTitle": "title", "postDescription": "description", } ] }, "unprocessedKeys": { "authors": [ // This item 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 Ergebnis 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.