

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# BatchDeleteItem
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-batch-delete-item"></a>

`BatchDeleteItem` 請求映射文件可讓您告知 AWS AppSync DynamoDB 解析程式向 DynamoDB 提出刪除多個項目的`BatchWriteItem`請求，可能跨越多個資料表。使用此要求範本時，您必須指定下列項目：
+ 將從其中刪除項目的資料表名稱
+ 將從個別資料表刪除項目的索引鍵

此時會套用 DynamoDB `BatchWriteItem` 限制，且可能不會提供**任何條件表達式**。

`BatchDeleteItem` 映射文件結構如下：

```
{
    "version" : "2018-05-29",
    "operation" : "BatchDeleteItem",
    "tables" : {
        "table1": [
        ## Item to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        },
        ## Item2 to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        }],
        "table2": [
        ## Item3 to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        },
        ## Item4 to delete Key
        {
             "foo" : ... typed value,
             "bar" : ... typed value
        }],
    }
}
```

欄位定義如下：

## BatchDeleteItem 欄位
<a name="BatchDeleteItem-list"></a>

### BatchDeleteItem 欄位清單
<a name="BatchDeleteItem-list-col"></a>

** `version` **  
範本定義的版本。僅支援 `2018-05-29`。此值為必填。

** `operation` **  
要執行的 DynamoDB 操作。若要執行 `BatchDeleteItem` DynamoDB 操作，這必須設為 `BatchDeleteItem`。此值為必填。

** `tables` **  
要從中刪除項目的 DynamoDB 資料表。每個資料表都是代表要刪除項目之主索引鍵的 DynamoDB 索引鍵清單。DynamoDB 項目可能具有單一雜湊索引鍵，或雜湊索引鍵和排序索引鍵，視資料表結構而定。如需如何指定「輸入值」的詳細資訊，請參閱[類型系統 （請求映射）](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request.md)。至少必須提供一個資料表。`tables` 值為必要。

注意事項：
+ 不同於 `DeleteItem` 操作，回應中未傳回完整刪除的項目。只會傳回已傳遞的索引鍵。
+ 如果資料表中未刪除任何項目，該資料表的 data 區塊中就會顯示 *null* 元素。
+ 調用結果會根據在請求映射範本中提供的順序，依資料表排序。
+ 中的每個`Delete`命令`BatchDeleteItem`都是原子的。但是，批次可以部分處理。如果因錯誤而部分批次處理，則未處理的索引鍵會透過 *unprocessedKeys* 區塊傳回為部分的呼叫結果。
+  `BatchDeleteItem` 限制為 25 個索引鍵。
+ 與衝突偵測搭配使用時，**不支援**此操作。同時使用兩者可能會導致錯誤。

使用下列範例要求映射範本時：

```
{
  "version": "2018-05-29",
  "operation": "BatchDeleteItem",
  "tables": {
    "authors": [
        {
          "author_id": {
            "S": "a1"
          }
        },
    ],
    "posts": [
        {
          "author_id": {
            "S": "a1"
          },
          "post_id": {
            "S": "p2"
          }
        }
    ],
  }
}
```

可透過 `$ctx.result` 提供的呼叫結果如下所示：

```
{
   "data": {
     "authors": [null],
     "posts": [
        # Was deleted
        {
          "author_id": "a1",
          "post_id": "p2"
        }
     ]
   },
   "unprocessedKeys": {
     "authors": [
        # This key was not processed due to an error
        {
          "author_id": "a1"
        }
      ],
     "posts": []
   }
}
```

`$ctx.error` 包含錯誤的詳細資訊。在要求映射範本中所提供的索引鍵 **data**、**unprocessedKeys** 及個別資料表索引鍵，都確定會出現在呼叫結果中。已刪除的項目會出現在 **data** 區塊中。尚未處理的項目在該 data 區塊中會標示為 *null*，並置於 **unprocessedKeys** 區塊。

如需更完整的範例，請遵循此處 AppSync 的 DynamoDB 批次教學[課程教學課程：DynamoDB 批次解析程式](tutorial-dynamodb-batch.md#aws-appsync-tutorial-dynamodb-batch)。