

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

# DeleteItem
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-deleteitem"></a>

`DeleteItem` 請求映射文件可讓您指示 AWS AppSync DynamoDB 解析程式向 DynamoDB 提出`DeleteItem`請求，並可讓您指定下列項目：
+ DynamoDB 中項目的索引鍵
+ 操作成功的條件

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

```
{
    "version" : "2018-05-29",
    "operation" : "DeleteItem",
    "customPartitionKey" : "foo",
    "populateIndexFields" : boolean value,
    "key": {
        "foo" : ... typed value,
        "bar" : ... typed value
    },
    "condition" : {
        ...
    },
    "_version" : 1
}
```

欄位定義如下：

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

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

** `version` **  
範本定義版本。目前支援 `2017-02-28` 和 `2018-05-29`。此值為必填。

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

** `key` **  
DynamoDB 中項目的索引鍵。DynamoDB 項目可能有單一雜湊索引鍵，或雜湊索引鍵和排序索引鍵，視資料表結構而定。如需指定「輸入值」的詳細資訊，請參閱[類型系統 （請求映射）](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request.md)。此值為必填。

** `condition` **  
決定要求是否成功的條件，可根據已存在於 DynamoDB 的物件狀態。如果沒有指定條件，`DeleteItem` 要求會刪除項目，無論該項目的目前狀態為何。如需條件的詳細資訊，請參閱[條件表達式](aws-appsync-resolver-mapping-template-reference-dynamodb-condition-expressions.md)。此值是選用的。

** `_version` **  
代表項目之最新已知版本的數值。此值是選用的。此欄位用於*衝突偵測*，而且僅支援已建立版本的資料來源。

**`customPartitionKey`**  
啟用時，此字串值會修改啟用版本控制時差異同步資料表所使用的 `ds_sk`和 `ds_pk` 記錄格式 （如需詳細資訊，請參閱 *AWS AppSync 開發人員指南*中的[衝突偵測和同步](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html))。啟用時，也會啟用`populateIndexFields`項目的處理。此欄位為選用欄位。

**`populateIndexFields`**  
布林值，當 **與 啟用`customPartitionKey`**時，會為差異同步資料表中的每個記錄建立新的項目，特別是在 `gsi_ds_pk`和 `gsi_ds_sk`欄中。如需詳細資訊，請參閱 *AWS AppSync 開發人員指南*中的[衝突偵測和同步](https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html)。此欄位為選用欄位。

從 DynamoDB 刪除的項目會自動轉換為 GraphQL 和 JSON 基本類型，並可在映射內容中使用 (`$context.result`)。

如需 DynamoDB 類型轉換的詳細資訊，請參閱[類型系統 （回應映射）](aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-responses.md)。

如需回應映射範本的詳細資訊，請參閱[解析程式映射範本概觀](resolver-mapping-template-reference-overview.md#aws-appsync-resolver-mapping-template-reference-overview)。

## 範例 1
<a name="id6"></a>

下列範例是 GraphQL 變動 的映射範本`deleteItem(id: ID!)`。如果已存在此 ID 的項目，則該項目將會遭到刪除。

```
{
    "version" : "2017-02-28",
    "operation" : "DeleteItem",
    "key" : {
        "id" : $util.dynamodb.toDynamoDBJson($ctx.args.id)
    }
}
```

## 範例 2
<a name="id7"></a>

下列範例是 GraphQL 變動 的映射範本`deleteItem(id: ID!, expectedVersion: Int!)`。如果已存在此 ID 的項目，則該項目將會遭到刪除，但其 `version` 欄位必須已設為 `expectedVersion`：

```
{
    "version" : "2017-02-28",
    "operation" : "DeleteItem",
    "key" : {
        "id" : $util.dynamodb.toDynamoDBJson($ctx.args.id)
    },
    "condition" : {
        "expression"       : "attribute_not_exists(id) OR version = :expectedVersion",
        "expressionValues" : {
            ":expectedVersion" : $util.dynamodb.toDynamoDBJson($expectedVersion)
        }
    }
}
```

如需 DynamoDB `DeleteItem` API 的詳細資訊，請參閱 [DynamoDB API 文件](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)。