Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
PutItem
Il documento di mappatura delle PutItem
richieste consente di indicare al AWS AppSync resolver DynamoDB di effettuare una PutItem
richiesta a DynamoDB e consente di specificare quanto segue:
-
La chiave dell'elemento in DynamoDB
-
L'intero contenuto della voce (costituita da
key
eattributeValues
) -
Condizioni per la riuscita dell'operazione
Il documento di mappatura PutItem
ha la seguente struttura:
{ "version" : "2018-05-29", "operation" : "PutItem", "customPartitionKey" : "foo", "populateIndexFields" : boolean value, "key": { "foo" : ... typed value, "bar" : ... typed value }, "attributeValues" : { "baz" : ... typed value }, "condition" : { ... }, "_version" : 1 }
I campi sono definiti come segue:
PutItem campi
-
version
-
La versione di definizione del modello. Al momento sono supportate le versioni
2017-02-28
e2018-05-29
. Questo valore è obbligatorio. -
operation
-
L'operazione DynamoDB da eseguire. Per eseguire l'operazione
PutItem
DynamoDB, il valore deve essere impostato suPutItem
. Questo valore è obbligatorio. -
key
-
La chiave dell'elemento in DynamoDB. Gli elementi DynamoDB possono avere una sola chiave hash o una chiave hash e una chiave di ordinamento, a seconda della struttura della tabella. Per ulteriori informazioni su come specificare un «valore digitato», consulta Sistema di tipi (mappatura delle richieste). Questo valore è obbligatorio.
-
attributeValues
-
Gli altri attributi della voce da inserir in DynamoDB. Per ulteriori informazioni su come specificare un «valore digitato», vedete Type system (request mapping). Questo campo è facoltativo.
-
condition
-
Una condizione per determinare se la richiesta deve riuscire o no in base allo stato dell'oggetto già incluso in DynamoDB. Se non viene specificata alcuna condizione, la richiesta
PutItem
sovrascrive qualsiasi valore esistente per quella voce. Per ulteriori informazioni sulle condizioni, vedere Espressioni di condizione. Questo valore è facoltativo. -
_version
-
Valore numerico che rappresenta l'ultima versione nota di un elemento. Questo valore è facoltativo. Questo campo viene utilizzato per il rilevamento dei conflitti ed è supportato solo nelle origini dati con versione.
customPartitionKey
-
Se abilitato, questo valore di stringa modifica il formato dei
ds_pk
recordds_sk
and utilizzati dalla tabella delta sync quando il controllo delle versioni è abilitato (per ulteriori informazioni, consulta Conflict detection and sync nella AWS AppSync Developer Guide). Se abilitata, è abilitata anche l'elaborazione dellapopulateIndexFields
voce. Questo campo è facoltativo. populateIndexFields
-
Un valore booleano che, se abilitato insieme a
customPartitionKey
, crea nuove voci per ogni record nella tabella delta sync, in particolare nelle colonnegsi_ds_pk
andgsi_ds_sk
. Per ulteriori informazioni, consulta Rilevamento e sincronizzazione dei conflitti nella Guida per gli AWS AppSync sviluppatori. Questo campo è facoltativo.
L'elemento scritto in DynamoDB viene automaticamente convertito in GraphQL e tipi primitivi JSON ed è disponibile nel contesto di mappatura (). $context.result
Per ulteriori informazioni sulla conversione dei tipi in DynamoDB, vedere Sistema dei tipi (mappatura delle risposte).
Per ulteriori informazioni sui modelli di mappatura delle risposte, consulta Panoramica dei modelli di mappatura Resolver.
Esempio 1
L'esempio seguente è un modello di mappatura per una mutazione updateThing(foo: String!, bar: String!, name: String!, version:
Int!)
GraphQL.
Se non esiste alcuna voce con la chiave specificata, viene creata. Se esiste, viene sovrascritta.
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "foo" : $util.dynamodb.toDynamoDBJson($ctx.args.foo), "bar" : $util.dynamodb.toDynamoDBJson($ctx.args.bar) }, "attributeValues" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.args.name), "version" : $util.dynamodb.toDynamoDBJson($ctx.args.version) } }
Esempio 2
L'esempio seguente è un modello di mappatura per una mutazione updateThing(foo: String!, bar: String!, name: String!, expectedVersion:
Int!)
GraphQL.
Questo esempio verifica che l'elemento attualmente in DynamoDB abbia version
il campo impostato su. expectedVersion
{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "foo" : $util.dynamodb.toDynamoDBJson($ctx.args.foo), "bar" : $util.dynamodb.toDynamoDBJson($ctx.args.bar) }, "attributeValues" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.args.name), #set( $newVersion = $context.arguments.expectedVersion + 1 ) "version" : $util.dynamodb.toDynamoDBJson($newVersion) }, "condition" : { "expression" : "version = :expectedVersion", "expressionValues" : { ":expectedVersion" : $util.dynamodb.toDynamoDBJson($expectedVersion) } } }
Per ulteriori informazioni su DynamoDB, consulta la documentazione di PutItem
API DynamoDB. API