

适用于 JavaScript 的 AWS SDK v2 已终止支持。建议您迁移到 [适用于 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。有关更多详情和如何迁移的信息，请参阅本[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

# 使用 DynamoDB 文档客户端
<a name="dynamodb-example-document-client"></a>

![JavaScript code example that applies to Node.js execution](http://docs.aws.amazon.com/zh_cn/sdk-for-javascript/v2/developer-guide/images/nodeicon.png)

**此 Node.js 代码示例演示：**
+ 如何使用文档客户端访问 DynamoDB 表。

## 情景
<a name="dynamodb-example-document-client-scenario"></a>

DynamoDB 文档客户端通过将属性值的概念抽象化，简化了项目的处理。此抽象化标注提供作为输入参数的原生 JavaScript 类型，以及将标注的响应数据转换为原生 JavaScript 类型。

有关 DynamoDB 文档客户端类的更多信息，请参阅 API 参考中的 [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html)。有关使用 Amazon DynamoDB 编程的更多信息，请参阅《Amazon DynamoDB 开发人员指南》**中的[使用 DynamoDB 进行编程](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.html)。

在本示例中，您使用一系列 Node.js 模块，通过文档客户端对 DynamoDB 表执行基本操作。代码使用 SDK for JavaScript，通过 DynamoDB 文档客户端类的以下方法来查询和扫描表：
+ [get](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#get-property)
+ [put](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#put-property)
+ [update](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#update-property)
+ [query](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#query-property)
+ [delete](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#delete-property)

## 先决条件任务
<a name="dynamodb-example-document-client-prerequisites"></a>

要设置和运行此示例，请先完成以下任务：
+ 安装 Node.js。有关更多信息，请参阅 [Node.js](https://nodejs.org) 网站。
+ 使用用户凭证创建共享配置文件。有关提供共享凭证文件的更多信息，请参阅[从共享凭证文件加载 Node.js 中的凭证](loading-node-credentials-shared.md)。
+ 创建一个您可以访问其项目的 DynamoDB 表。有关使用 SDK for JavaScript 创建 DynamoDB 表的更多信息，请参阅[在 DynamoDB 中创建和使用表](dynamodb-examples-using-tables.md)。您还可以使用 [DynamoDB 控制台](https://console.aws.amazon.com/dynamodb/)创建表。

## 从表中获取项目
<a name="dynamodb-example-document-client-get"></a>

创建文件名为 `ddbdoc_get.js` 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB，请创建一个 `AWS.DynamoDB.DocumentClient` 对象。创建一个 JSON 对象，其中包含从表获取某个项目所需的参数，在本示例中包括表的名称，表中哈希键的名称，所要获取项目的哈希键的值。调用 DynamoDB 文档客户端的 `get` 方法。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  TableName: "EPISODES_TABLE",
  Key: { KEY_NAME: VALUE },
};

docClient.get(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Item);
  }
});
```

要运行示例，请在命令行中键入以下内容。

```
node ddbdoc_get.js
```

此示例代码可在 [GitHub 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_get.js)找到。

## 将项目放入表中
<a name="dynamodb-example-document-client-put"></a>

创建文件名为 `ddbdoc_put.js` 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB，请创建一个 `AWS.DynamoDB.DocumentClient` 对象。创建一个 JSON 对象，其中包含将项目写入表中所需的参数，在本示例中包括表的名称，要添加或更新的项目的描述（包括哈希键和值），以及要在项目上设置的属性的名称和值。调用 DynamoDB 文档客户端的 `put` 方法。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  TableName: "TABLE",
  Item: {
    HASHKEY: VALUE,
    ATTRIBUTE_1: "STRING_VALUE",
    ATTRIBUTE_2: VALUE_2,
  },
};

docClient.put(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

要运行示例，请在命令行中键入以下内容。

```
node ddbdoc_put.js
```

此示例代码可在 [GitHub 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_put.js)找到。

## 更新表中的项目
<a name="dynamodb-example-document-client-update"></a>

创建文件名为 `ddbdoc_update.js` 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB，请创建一个 `AWS.DynamoDB.DocumentClient` 对象。创建一个 JSON 对象，其中包含将项目写入表中所需的参数，在本示例中包括表的名称，要更新的项目的键，定义要更新的项目的属性的一组 `UpdateExpressions`，以及您在 `ExpressionAttributeValues` 参数中将值分配到的令牌。调用 DynamoDB 文档客户端的 `update` 方法。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

// Create variables to hold numeric key values
var season = SEASON_NUMBER;
var episode = EPISODES_NUMBER;

var params = {
  TableName: "EPISODES_TABLE",
  Key: {
    Season: season,
    Episode: episode,
  },
  UpdateExpression: "set Title = :t, Subtitle = :s",
  ExpressionAttributeValues: {
    ":t": "NEW_TITLE",
    ":s": "NEW_SUBTITLE",
  },
};

docClient.update(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

要运行示例，请在命令行中键入以下内容。

```
node ddbdoc_update.js
```

此示例代码可在 [GitHub 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_update.js)找到。

## 查询表
<a name="dynamodb-example-document-client-query"></a>

此示例查询包含有关视频系列的剧集信息的表，返回第二季第九集之后，字幕中包含指定短语的每集的名称和字幕。

创建文件名为 `ddbdoc_query.js` 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB，请创建一个 `AWS.DynamoDB.DocumentClient` 对象。创建一个 JSON 对象，其中包含查询表所需的参数，在本示例中包括表名，查询所需的 `ExpressionAttributeValues`，以及使用这些值定义查询要返回的项目的 `KeyConditionExpression`。调用 DynamoDB 文档客户端的 `query` 方法。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  ExpressionAttributeValues: {
    ":s": 2,
    ":e": 9,
    ":topic": "PHRASE",
  },
  KeyConditionExpression: "Season = :s and Episode > :e",
  FilterExpression: "contains (Subtitle, :topic)",
  TableName: "EPISODES_TABLE",
};

docClient.query(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data.Items);
  }
});
```

要运行示例，请在命令行中键入以下内容。

```
node ddbdoc_query.js
```

此示例代码可在 [GitHub 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_query.js)找到。

## 从表中删除项目
<a name="dynamodb-example-document-client-delete"></a>

创建文件名为 `ddbdoc_delete.js` 的 Node.js 模块。请确保按前面所示配置开发工具包。要访问 DynamoDB，请创建一个 `AWS.DynamoDB.DocumentClient` 对象。创建一个 JSON 对象，其中包含从表中删除某个项目所需的参数，在本示例中包括表的名称，以及所要删除项目的哈希键的名称和值。调用 DynamoDB 文档客户端的 `delete` 方法。

```
// Load the AWS SDK for Node.js
var AWS = require("aws-sdk");
// Set the region
AWS.config.update({ region: "REGION" });

// Create DynamoDB document client
var docClient = new AWS.DynamoDB.DocumentClient({ apiVersion: "2012-08-10" });

var params = {
  Key: {
    HASH_KEY: VALUE,
  },
  TableName: "TABLE",
};

docClient.delete(params, function (err, data) {
  if (err) {
    console.log("Error", err);
  } else {
    console.log("Success", data);
  }
});
```

要运行示例，请在命令行中键入以下内容。

```
node ddbdoc_delete.js
```

此示例代码可在 [GitHub 上的此处](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascript/example_code/dynamodb/ddbdoc_delete.js)找到。