Dynamoose 是一个DynamoDB的建模工具.
安装
1 | npm install dynamoose |
使用
配置
环境变量
1
2
3
4# Set environment variables
export AWS_ACCESS_KEY_ID="Your AWS Access Key ID"
export AWS_SECRET_ACCESS_KEY="Your AWS Secret Access Key"
export AWS_REGION="us-east-1"配置AWS Object
1
2
3
4
5dynamoose.AWS.config.update({
accessKeyId: 'AKID',
secretAccessKey: 'SECRET',
region: 'us-east-1'
});AWS IAM role配置
https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html本地
1
2dynamoose.local(); // This will set the server to "http://localhost:8000" (default)
dynamoose.local("http://localhost:1234") // This will set the server to "http://localhost:1234"
建模及使用
建模
1 | { |
setting1
2
3
4
5
6
7
8{
create: true, // Create table in DB, if it does not exist,
update: false, // Update remote indexes if they do not match local index structure
waitForActive: true, // Wait for table to be created before trying to use it
waitForActiveTimeout: 180000, // wait 3 minutes for table to activate
prefix: '', // Default prefix for all DynamoDB tables
suffix: '' // Default suffix for all DynamoDB tables
}
1 | var DMovie = builder(config); |
添加记录
1 | return DMovie.create({ |
查询
1 | it('DMovie record should be query successfully', () => { |
更新记录
1 | return DMovie.update({ |
删除记录
1 | it('DMovie record should be deleted successfully', () => { |
批量添加
1 | it('DMovie record should be batch added successfully', () => { |
DynamoDB 低级 API 支持批量读取和写入操作.
批量操作可以容忍批处理中的个别请求失败。举例来说,假设一个 BatchGetItem 请求读取五个项目。即使某些底层 GetItem 请求失败,这也不会导致整个 BatchGetItem 操作失败。另一方面,如果所有五个读取操作都失败,则整个 BatchGetItem 将失败。
批量操作会返回有关各失败请求的信息,以便您诊断问题并重试操作。对于 BatchGetItem,在请求的 UnprocessedKeys 参数中会返回有问题的表和主键。对于 BatchWriteItem,在 UnprocessedItems 中返回类似信息。
如果 DynamoDB 返回了任何未处理的项目,应对这些项目重试批量操作。然而,我们强烈建议您使用指数回退算法。如果立即重试批量操作,底层读取或写入请求仍然会由于各表的限制而失败。如果使用指数回退延迟批量操作,批处理中的各请求成功的可能性更大。
查询索引
1 | it('DMovie record with index#title-index should be counted successfully', () => { |
删除表
1 | it('deleteTable should be called successfully', () => { |