TransactGetItems
O objeto de solicitação TransactGetItems
permite que você oriente a função do DynamoDB do AWS AppSync a fazer uma solicitação TransactGetItems
ao DynamoDB para recuperar vários itens, potencialmente em diversas tabelas. Para esse objeto de solicitação, você deve especificar o seguinte:
-
O nome da tabela de cada item de solicitação de onde recuperar o item
-
A chave de cada item de solicitação a ser recuperado de cada tabela
Os limites TransactGetItems
do DynamoDB se aplicam e nenhuma expressão de condição pode ser fornecida.
O objeto de solicitação TransactGetItems
tem a seguinte estrutura:
type DynamoDBTransactGetItemsRequest = { operation: 'TransactGetItems'; transactItems: { table: string; key: { [key: string]: any }; projection?: { expression: string; expressionNames?: { [key: string]: string }; }[]; }; };
Os campos são definidos da seguinte forma:
Campos TransactGetItems
-
operation
-
A operação do DynamoDB para execução. Para executar a operação
TransactGetItems
do DynamoDB, ela deve ser definida comoTransactGetItems
. Este valor é obrigatório. -
transactItems
-
Os itens de solicitação a serem incluídos. O valor é uma matriz de itens de solicitação. Pelo menos um item de solicitação deve ser fornecido. Este valor
transactItems
é obrigatório.-
table
-
A tabela do DynamoDB da qual recuperar o item. O valor é uma string do nome da tabela. Este valor
table
é obrigatório. -
key
-
A chave do DynamoDB representando a chave primária do item a ser recuperado. Os itens do DynamoDB podem ter uma única chave de hash ou uma chave de hash e uma chave de classificação, dependendo da estrutura da tabela. Para obter mais informações sobre como especificar um "valor digitado", consulte Sistema de tipo (Mapeamento de solicitação).
projection
-
Uma projeção usada para especificar os atributos a serem retornados da operação do DynamoDB. Para obter mais informações sobre projeções, consulte Projeções. Esse campo é opcional.
-
Informações importantes:
-
Se uma transação for bem-sucedida, a ordem dos itens recuperados no bloco
items
será a mesma que a ordem dos itens solicitados. -
As transações são executadas na sua totalidade ou não são realizadas. Se algum item de solicitação causar um erro, não será executada a transação inteira e os detalhes do erro serão retornados.
-
Um item de solicitação que não pode ser recuperado não é um erro. Em vez disso, um elemento nulo aparece no bloco de itens na posição correspondente.
-
Se o erro de uma transação for TransactionCanceledException, o bloco
cancellationReasons
será preenchido. A ordem dos motivos de cancelamento no blococancellationReasons
será a mesma que a ordem de itens solicitados. -
TransactGetItems
está limitado a 100 itens de solicitação.
Veja a seguir um exemplo de manipulador de solicitação de função:
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'TransactGetItems', transactItems: [ { table: 'posts', key: util.dynamodb.toMapValues({ postId }), }, { table: 'authors', key: util.dynamodb.toMapValues({ authorId }), }, ], }; }
Se a transação for bem-sucedida e somente o primeiro item solicitado for recuperado, o resultado de invocação disponível em ctx.result
será o seguinte:
{ "items": [ { // Attributes of the first requested item "post_id": "p1", "post_title": "title", "post_description": "description" }, // Could not retrieve the second requested item null, ], "cancellationReasons": null }
Se a transação falhar devido a TransactionCanceledException causada pelo primeiro item de solicitação, o resultado de invocação disponível em ctx.result
será o seguinte:
{ "items": null, "cancellationReasons": [ { "type":"Sample error type", "message":"Sample error message" }, { "type":"None", "message":"None" } ] }
O ctx.error
contém detalhes sobre o erro. A presença dos itens de chaves e cancelationReasons está garantida em ctx.result
.