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
TransactGetItemsdo 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
itemsserá 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
cancellationReasonsserá preenchido. A ordem dos motivos de cancelamento no blococancellationReasonsserá a mesma que a ordem de itens solicitados. -
TransactGetItemsestá 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.