# @aws/dynamodb-data-mapper-annotations 中文文档

规范地址：https://npmcn.com/package/%40aws/dynamodb-data-mapper-annotations/

版本：0\.7\.3
npm 元数据更新时间：2026-10-15T22:06:36.741Z
中文译文更新时间：2026-11-07T12:38:29.415Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws/dynamodb-data-mapper-annotations
原文对照：https://npmcn.com/package/%40aws/dynamodb-data-mapper-annotations/?lang=original
项目主页：https://awslabs.github.io/dynamodb-data-mapper-js/packages/dynamodb-data-mapper-annotations/
源码仓库：https://github.com/awslabs/dynamodb-data-mapper-js

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：45.4 kB，33 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：6 个
- 首次发布：2017-11-20T23:47:47.712Z
- 最新版本发布：2018-08-15T19:54:15.397Z
- 近 30 天下载量：76764（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：18（近 12 个月 0 个）

## 中文简介

说明提供了 TypeScript 域对象和 @aws/dynamodb- data-mapper 库之间的简单整合

## 安装

```sh
npm install @aws/dynamodb-data-mapper-annotations
```

也可以使用：`pnpm add @aws/dynamodb-data-mapper-annotations`、`yarn add @aws/dynamodb-data-mapper-annotations`、`bun add @aws/dynamodb-data-mapper-annotations`

## README

# 亚马逊 DynamoDB 数据Mapper 说明

[![Apache 2 License](https://img.shields.io/github/license/awslabs/dynamodb-data-mapper-js.svg?style=flat)](http://aws.amazon.com/apache-2-0/)

此库提供说明, 以方便域类的整合 与 `DataMapper` 定义 `@aws/dynamodb-data-mapper`. 这些说明 以单独的国家预防机制一揽子计划提供,因为它们依赖两个试验项目: typeScript(装饰和元数据装饰)的特性,并取决于 `reflect-metadata` 软件包.

## 开始

要使用注释, 您首先需要启用两个类型脚本编译器 设置 : `experimentalDecorators` 财务报告和审定财务报表 `emitDecoratorMetadata`前者 允许在您的工程中使用注释,而后一键会发出类型 关于已申报财产类别的信息.

下一个,开始添加 `table` 代表域模型的说明 您的 DynamoDB 表格中的记录和声明的属性说明 映射到这些记录属性的属性:

```typescript
import {
    attribute,
    autoGeneratedHashKey,
    rangeKey,
    table,
    versionAttribute,
} from '@aws/dynamodb-data-mapper-annotations';
import uuidV4 = require('uuid/v4');

@table('my_table')
class MyDomainClass {
    @autoGeneratedHashKey()
    id: string;

    @rangeKey({defaultProvider: () => new Date()})
    createdAt: Date;

    @versionAttribute()
    version: number;

    @attribute()
    toggle?: boolean;

    @attribute({memberType: 'String'})
    tags?: Set<string>;
    
    // This property will not be saved to DynamoDB.
    notPersistedToDynamoDb: string;
}
```

使用这些注释将在 `DynamoDbSchema` 财务报告和审定财务报表 `DynamoDbTable` 类别原型上的符号,意思 ,可以直接将课程实例传递给 `DataMapper` 举个例子 没有 需要单独定义一个方案;您的类属性类型声明是 计划.

要在DynamoDB记录中声明一个对应地图属性值的类, 简单的省略 `table` 注释 :

```typescript
import {
    attribute, 
    hashKey,
    table,
} from '@aws/dynamodb-data-mapper-annotations';
import {embed} from '@aws/dynamodb-data-mapper';

class Comment {
    @attribute()
    author?: string;

    @attribute()
    postedAt?: Date;

    @attribute()
    text?: string;
}

@table('posts')
class BlogPost {
    @hashKey()
    id: string;

    @attribute()
    author?: string;

    @attribute()
    postedAt?: Date;

    @attribute()
    text?: string;
    
    @attribute({memberType: embed(Comment)})
    replies?: Array<Comment>
}
```

## 支持的说明

### `attribute`

在映射的 DynamoDB 记录中标记属性 。 注释 将尝试从 TypeScript 类型推断正确的 DynamoDB 类型 元数据,虽然没有任何通用类型参数的元数据 已使用.

`attribute` 必须调用为函数并接受可选参数 包含部分或完整的场图定义.

### `autoGeneratedHashKey`

指定该财产代表记录的散列键。 如果没有键是 定义,将使用 V4 UUID .

`autoGeneratedHashKey` 必须调用为函数并接受可选 参数,包含部分或完整的字段方案定义.

### `hashKey`

指定该财产代表记录的散列(分块)密钥.

`hashKey` 必须调用为函数并接受可选参数 包含部分或完整的场图定义.

### `rangeKey`

指定属性代表记录范围(类型)密钥.

`rangeKey` 必须调用为函数并接受可选参数 包含部分或完整的场图定义.

### `table`

指定一个类别作为DynatomDB的一个表格的代表.

`table` 必须以该表格名称作为唯一的参数.

### `versionAttribute`

指定该属性代表记录的版本属性. 数据 映射器将使用乐观的锁定方式, 在 `put` 财务报告和审定财务报表 `update` 操作并发送条件表达式 `put`, (中文(简体) ), `update`,以及 `delete` 如果操作失败,则操作失败 数据库中的记录有一个版本编号,与所持有的版本号不符 客户.

`versionAttribute` 必须调用为函数并接受可选参数 包含部分或完整的场图定义.

## 洞穴

### 依赖实验类型脚本特性

因为这个软件包依赖于实验的 TypeScript 特性,所以它是主题 并应被视为β软件。 装潢师正在工作 eCMAScript标准轨迹,但所接受的形式可能与该轨迹不同 由 TypeScript 执行,这可能导致由 这个项目要改变.

### 缺乏通用材料的类别信息

请注意 TypeScript 不发布任何关于类型参数的元数据 用于通用类型,因此 `Array<string>`, (中文(简体) ), `[number, string]`,以及 `MyClass[]` 全部暴露为 `Array` 通过释放的元数据。 无 附加元数据,此注释将把所有遇到的数组当作 未类型数据的收集。 您可以提供 `members` 声明或声明 `memberType` 将财产视为 分别是tuple或打入的列表.

地图和图集需要成员类型声明,尽管成员类型 如果财产被宣布为类型 `BinarySet` 或者说 `NumberValueSet` (从 `@aws/dynamodb-auto-marshaller` 软件包).

## 常见问题

### @aws/dynamodb-data-mapper-annotations 是什么？

说明提供了 TypeScript 域对象和 @aws/dynamodb- data-mapper 库之间的简单整合

### 如何安装 @aws/dynamodb-data-mapper-annotations？

在项目目录运行 npm install @aws/dynamodb-data-mapper-annotations，或使用 pnpm add / yarn add / bun add。

### @aws/dynamodb-data-mapper-annotations 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aws/dynamodb-data-mapper-annotations 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @aws/dynamodb-data-mapper-annotations 可以商用吗？

@aws/dynamodb-data-mapper-annotations 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @aws/dynamodb-data-mapper-annotations 的下载量有多少？

根据 npm 官方下载统计，@aws/dynamodb-data-mapper-annotations 在 2026/10/08 – 2026/11/06 这 30 天内被下载 76,764 次，日均约 2,559 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aws/dynamodb-data-mapper-annotations 还在维护吗？

最新版本 0\.7\.3 发布于 2018/08/16（8 年前）；至今共发布 18 个版本，其中过去 12 个月发布了 0 个；首次发布于 2017/11/21。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

