亚马逊 DynamoDB 数据Mapper 说明
此库提供说明, 以方便域类的整合
与 DataMapper 定义 @aws/dynamodb-data-mapper. 这些说明
以单独的国家预防机制一揽子计划提供,因为它们依赖两个试验项目:
typeScript(装饰和元数据装饰)的特性,并取决于
reflect-metadata 软件包.
开始
要使用注释, 您首先需要启用两个类型脚本编译器
设置 : experimentalDecorators 财务报告和审定财务报表 emitDecoratorMetadata前者
允许在您的工程中使用注释,而后一键会发出类型
关于已申报财产类别的信息.
下一个,开始添加 table 代表域模型的说明
您的 DynamoDB 表格中的记录和声明的属性说明
映射到这些记录属性的属性:
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 注释 :
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
软件包).