本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
BatchGetItem
BatchGetItem
請求物件可讓您告知 AWS AppSync DynamoDB 函數向 DynamoDB 提出BatchGetItem
請求,以擷取多個項目,可能橫跨多個資料表。對於此請求物件,您必須指定下列項目:
-
將從其中擷取項目的資料表名稱
-
將從個別資料表擷取項目的索引鍵
此時會套用 DynamoDB BatchGetItem
限制,且可能不會提供任何條件表達式。
BatchGetItem
請求物件具有下列結構:
type DynamoDBBatchGetItemRequest = { operation: 'BatchGetItem'; tables: { [tableName: string]: { keys: { [key: string]: any }[]; consistentRead?: boolean; projection?: { expression: string; expressionNames?: { [key: string]: string }; }; }; }; };
欄位定義如下:
BatchGetItem 欄位
-
operation
-
要執行的 DynamoDB 操作。若要執行
BatchGetItem
DynamoDB 操作,這必須設為BatchGetItem
。此值為必填。 -
tables
-
要從中擷取項目的 DynamoDB 資料表。此值是其中將資料表名稱指定為該映射索引鍵的映射。至少必須提供一個資料表。
tables
值為必填。-
keys
-
代表要擷取之項目之主索引鍵的 DynamoDB 索引鍵清單。DynamoDB 項目可能具有單一雜湊金鑰,或雜湊金鑰和排序金鑰,視資料表結構而定。如需如何指定「輸入值」的詳細資訊,請參閱類型系統 (請求映射)。
-
consistentRead
-
執行 GetItem 操作時是否使用一致性讀取。此值為選用值,且預設值為 false。
projection
-
用於指定要從 DynamoDB 操作傳回之屬性的投影。如需投影的詳細資訊,請參閱投影。此欄位為選用欄位。
-
注意事項:
-
如果未從資料表中擷取任何項目,該資料表的 data 區塊中會顯示 null 元素。
-
調用結果會根據在請求物件內提供的順序,依資料表排序。
-
不過, 內的每個
Get
命令BatchGetItem
都是原子,但批次可以部分處理。如果因錯誤而部分批次處理,則未處理的索引鍵會透過 unprocessedKeys 區塊傳回為部分的呼叫結果。 -
BatchGetItem
限制為 100 個索引鍵。
針對下列範例函數請求處理常式:
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 })], }, }; }
可透過 ctx.result
提供的呼叫結果如下所示:
{ "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
包含錯誤的詳細資訊。在函數請求物件中結果中提供的金鑰資料、unprocessedKeys和每個資料表金鑰,保證會出現在調用結果中。已刪除的項目會出現在 data 區塊中。尚未處理的項目在該 data 區塊中會標示為 null,並置於 unprocessedKeys 區塊。