Synchronisierung - AWS AppSync

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.

Synchronisierung

Mit dem Sync Anforderungszuordnungsdokument können Sie alle Ergebnisse aus einer DynamoDB-Tabelle abrufen und anschließend nur die Daten empfangen, die seit Ihrer letzten Abfrage geändert wurden (die Delta-Updates). SyncAnfragen können nur an versionierte DynamoDB-Datenquellen gestellt werden. Sie können folgende Formen angeben:

  • Ein Filter zum Ausschließen von Ergebnissen

  • Wie viele Elemente zurückgegeben werden sollen

  • Paginierungstoken

  • Wann Ihre letzte Sync-Operation gestartet wurde

Das Sync-Zuweisungsdokument weist die folgende Struktur auf:

{ "version" : "2018-05-29", "operation" : "Sync", "basePartitionKey": "Base Tables PartitionKey", "deltaIndexName": "delta-index-name", "limit" : 10, "nextToken" : "aPaginationToken", "lastSync" : 1550000000000, "filter" : { ... } }

Die Felder sind wie folgt definiert:

Synchronisieren Sie Felder

version

Die Version der Vorlagendefinition. Derzeit wird nur 2018-05-29 unterstützt. Dieser Wert ist erforderlich.

operation

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

filter

Ein Filter, mit dem die Ergebnisse aus DynamoDB gefiltert werden können, bevor sie zurückgegeben werden. Weitere Informationen zu Filtern finden Sie unter Filter. Dies ist ein optionales Feld.

limit

Die maximale Anzahl der zu einem bestimmten Zeitpunkt auszuwertenden Elemente. Dies ist ein optionales Feld. Wenn nicht angegeben, wird das Standardlimit auf 100 Elemente festgelegt. Der maximale Wert für dieses Feld ist 1000 Elemente.

nextToken

Das Paginierungs-Token für die Fortsetzung einer früheren Abfrage. Dieses wäre von einer vorherigen Abfrage erhalten worden. Dies ist ein optionales Feld.

lastSync

Der Moment, in Epochenmillisekunden, an dem die letzte erfolgreiche Sync-Operation gestartet wurde. Wenn angegeben, werden nur Elemente zurückgegeben, die sich nach lastSync geändert haben. Dieses Feld ist optional und sollte nur ausgefüllt werden, nachdem alle Seiten von einem ersten Sync-Vorgang abgerufen wurden. Wenn nicht angegeben, werden Ergebnisse aus der Basis-Tabelle zurückgegeben, andernfalls werden Ergebnisse aus der Delta-Tabelle zurückgegeben.

basePartitionKey

Der Partitionsschlüssel der Basistabelle, der bei der Ausführung eines Sync Vorgangs verwendet wird. In diesem Feld kann eine Sync Operation ausgeführt werden, wenn die Tabelle einen benutzerdefinierten Partitionsschlüssel verwendet. Dies ist ein optionales Feld.

deltaIndexName

Der für die Sync Operation verwendete Index. Dieser Index ist erforderlich, um einen Sync Vorgang für die gesamte Delta-Store-Tabelle zu aktivieren, wenn die Tabelle einen benutzerdefinierten Partitionsschlüssel verwendet. Die Sync Operation wird auf dem GSI (erstellt am gsi_ds_pk undgsi_ds_sk) ausgeführt. Dies ist ein optionales Feld.

Die von der DynamoDB-Synchronisierung zurückgegebenen Ergebnisse werden automatisch in GraphQL und JSON primitive Typen konvertiert und sind im Mapping-Kontext () verfügbar. $context.result

Weitere Informationen zur DynamoDB-Typkonvertierung finden Sie unter Typsystem (Antwortzuordnung).

Weitere Informationen zu Vorlagen für die Antwortzuweisung finden Sie unter Übersicht über Resolver-Mapping-Vorlagen.

Die Ergebnisse weisen die folgende Struktur auf:

{ items = [ ... ], nextToken = "a pagination token", scannedCount = 10, startedAt = 1550000000000 }

Die Felder sind wie folgt definiert:

items

Eine Liste mit den Elementen, die von der Synchronisierung zurückgegeben wurden.

nextToken

Falls es möglicherweise mehr Ergebnisse gibt, nextToken enthält es ein Paginierungstoken, das Sie in einer anderen Anfrage verwenden können. AWS AppSync verschlüsselt und verschleiert das von DynamoDB zurückgegebene Paginierungstoken. Damit sickern Daten aus Ihren Tabellen nicht versehentlich an den Aufrufer durch. Diese Paginierungs-Tokens können nicht über verschiedene Resolver hinweg verwendet werden.

scannedCount

Die Anzahl der Elemente, die von DynamoDB abgerufen wurden, bevor ein Filterausdruck (falls vorhanden) angewendet wurde.

startedAt

Der Moment, in Epochenmillisekunden, an dem der Synchronisierungsvorgang gestartet wurde, den Sie lokal speichern und in einer anderen Anforderung als lastSync-Argument verwenden können. Wenn ein Paginierungstoken in der Anforderung enthalten war, entspricht dieser Wert dem Wert, der von der Anforderung für die erste Ergebnisseite zurückgegeben wird.

Beispiel

Das folgende Beispiel ist eine Zuordnungsvorlage für die GraphQL-Abfrage:syncPosts(nextToken: String, lastSync: AWSTimestamp).

Wenn in diesem Beispiel lastSync weggelassen wird, werden alle Einträge in der Basistabelle zurückgegeben. Wenn lastSync angegeben wird, werden nur die Einträge in der Delta-Synchronisationstabelle zurückgegeben, die sich seit lastSync geändert haben.

{ "version" : "2018-05-29", "operation" : "Sync", "limit": 100, "nextToken": $util.toJson($util.defaultIfNull($ctx.args.nextToken, null)), "lastSync": $util.toJson($util.defaultIfNull($ctx.args.lastSync, null)) }