本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
BatchDeleteItem
BatchDeleteItem
請求物件可讓您告訴 AWS AppSync DynamoDB 函數向 DynamoDB 提出刪除多個項目的BatchWriteItem
請求,可能跨越多個資料表。對於此請求物件,您必須指定下列項目:
-
將從其中刪除項目的資料表名稱
-
將從個別資料表刪除項目的索引鍵
此時會套用 DynamoDB BatchWriteItem
限制,且可能不會提供任何條件表達式。
BatchDeleteItem
請求物件具有下列結構:
type DynamoDBBatchDeleteItemRequest = { operation: 'BatchDeleteItem'; tables: { [tableName: string]: { [key: string]: any }[]; }; };
欄位定義如下:
BatchDeleteItem 欄位
-
operation
-
要執行的 DynamoDB 操作。若要執行
BatchDeleteItem
DynamoDB 操作,這必須設為BatchDeleteItem
。此值為必填。 -
tables
-
刪除項目的 DynamoDB 資料表。每個資料表都是 DynamoDB 金鑰清單,代表要刪除項目的主要金鑰。DynamoDB 項目可能具有單一雜湊金鑰,或雜湊金鑰和排序金鑰,具體取決於資料表結構。如需如何指定「輸入值」的詳細資訊,請參閱類型系統 (請求映射)。至少必須提供一個資料表。
tables
值為必填。
注意事項:
-
不同於
DeleteItem
操作,回應中未傳回完整刪除的項目。只會傳回已傳遞的索引鍵。 -
如果資料表中未刪除任何項目,該資料表的 data 區塊中就會顯示 null 元素。
-
調用結果會根據在請求物件內提供的順序,依資料表排序。
-
中的每個
Delete
命令BatchDeleteItem
都是原子。但是,批次可以部分處理。如果批次因錯誤而部分處理,未處理的金鑰會在unprocessedKeys區塊內傳回做為調用結果的一部分。 -
BatchDeleteItem
限制為 25 個索引鍵。 -
與衝突偵測搭配使用時,不支援此操作。同時使用兩者可能會導致錯誤。
對於下列範例函數請求處理常式:
import { util } from '@aws-appsync/utils'; export function request(ctx) { const { authorId, postId } = ctx.args; return { operation: 'BatchDeleteItem', tables: { authors: [util.dynamodb.toMapValues({ authorId })], posts: [util.dynamodb.toMapValues({ authorId, postId })], }, }; }
可透過 ctx.result
提供的呼叫結果如下所示:
{ "data": { "authors": [null], "posts": [ // Was deleted { "authorId": "a1", "postId": "p2" } ] }, "unprocessedKeys": { "authors": [ // This key was not processed due to an error { "authorId": "a1" } ], "posts": [] } }
ctx.error
包含錯誤的詳細資訊。函數請求物件中提供的索引鍵資料 unprocessedKeys、 和每個資料表索引鍵都保證會出現在叫用結果中。已刪除的項目會出現在 data 區塊中。尚未處理的項目會在資料區塊內標記為 null,並放置在unprocessedKeys區塊內。