

 [适用于 JavaScript 的 Amazon SDK V3 API 参考指南](https://docs.amazonaws.cn/AWSJavaScriptSDK/v3/latest/)详细描述了 适用于 JavaScript 的 Amazon SDK 版本 3 (V3) 的所有 API 操作。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# DynamoDB 文档客户端
<a name="migrate-dynamodb-doc-client"></a>

## v3 中 DynamoDB 文档客户端的基本用法
<a name="basic-usage-of-dynamodb-document-client-in-v3"></a>
+  在 v2 中，您可以使用该[https://docs.amazonaws.cn/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.amazonaws.cn/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html)类使用数组、数字和对象等 JavaScript 本机类型调用 APIs DynamoDB。这通过将属性值的概念抽象化，简化了 Amazon DynamoDB 项的处理。
+  v3 中提供了等效的 [https://docs.amazonaws.cn/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html](https://docs.amazonaws.cn/AWSJavaScriptSDK/v3/latest/modules/_aws_sdk_lib_dynamodb.html) 客户端。该客户端与 v3 SDK 中的常规服务客户端类似，区别在于它在构造函数中使用一个基本的 DynamoDB 客户端。

 示例：

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb"; // ES6 import
// const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); // CommonJS import
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb"; // ES6 import
// const { DynamoDBDocumentClient, PutCommand } = require("@aws-sdk/lib-dynamodb"); // CommonJS import

// Bare-bones DynamoDB Client
const client = new DynamoDBClient({});

// Bare-bones document client
const ddbDocClient = DynamoDBDocumentClient.from(client); // client is DynamoDB client

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "1",
      content: "content from DynamoDBDocumentClient",
    },
  })
);
```

## 编组时的 `Undefined` 值
<a name="undefined-values-in-when-marshalling"></a>
+  在 v2 中，在对 DynamoDB 进行编组时，对象中的 `undefined` 值会自动被忽略。
+  在 v3 中，`@aws-sdk/lib-dynamodb` 中的默认编组行为已变更：不再省略包含 `undefined` 值的对象。为了与 v2 的功能保持一致，开发人员必须在 DynamoDB 文档客户端的 `marshallOptions` 中将 `removeUndefinedValues` 显式设置为 `true`。

 示例：

```
import { DynamoDBClient } from "@aws-sdk/client-dynamodb";
import { DynamoDBDocumentClient, PutCommand } from "@aws-sdk/lib-dynamodb";

const client = new DynamoDBClient({});

// The DynamoDBDocumentClient is configured to handle undefined values properly
const ddbDocClient = DynamoDBDocumentClient.from(client, {
  marshallOptions: {
    removeUndefinedValues: true
  }
});

await ddbDocClient.send(
  new PutCommand({
    TableName,
    Item: {
      id: "123",
      content: undefined // This value will be automatically omitted.
      array: [1, undefined], // The undefined value will be automatically omitted.
      map: { key: undefined }, // The "key" will be automatically omitted.
      set: new Set([1, undefined]), // The undefined value will be automatically omitted.
    };
  })
);
```

 有关更多示例和配置，请参见[程序包 README](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-dynamodb/README.md) 文件。