10分钟上手dynamodb-onetable:NodeJS环境下的DynamoDB CRUD操作实战
10分钟上手dynamodb-onetableNodeJS环境下的DynamoDB CRUD操作实战【免费下载链接】dynamodb-onetableDynamoDB access and management for one table designs with NodeJS项目地址: https://gitcode.com/gh_mirrors/dy/dynamodb-onetabledynamodb-onetable是NodeJS环境下DynamoDB单表设计的高效访问管理工具它提供简洁优雅的API让开发者轻松实现DynamoDB的各种操作。通过单表设计模式能够有效降低成本并提升查询效率是DynamoDB开发的得力助手。 准备工作安装与环境配置安装dynamodb-onetable使用npm即可快速安装dynamodb-onetablenpm i dynamodb-onetable配置DynamoDB客户端首先需要导入DynamoDBClient并创建实例支持本地开发环境和AWS云环境import { DynamoDBClient } from aws-sdk/client-dynamodb // 本地开发环境配置 const client new DynamoDBClient({ region: local, endpoint: http://localhost:4567, }) // AWS云环境配置生产环境 // const client new DynamoDBClient({ region: us-east-1 }) 核心概念单表设计与Schema定义什么是单表设计单表设计是DynamoDB的最佳实践通过在一个表中存储多种实体类型优化查询性能并降低成本。dynamodb-onetable专为单表设计而生让复杂的单表操作变得简单。定义数据SchemaSchema是dynamodb-onetable的核心它定义了实体结构、索引和属性规则。以下是一个简单的用户Schema示例const table new Table({ name: TestCrud, client: client, schema: { format: onetable:1.1.0, version: 0.0.1, indexes: { primary: { hash: pk, sort: sk }, gs1: { hash: gs1pk, sort: gs1sk }, // 全局二级索引 }, models: { User: { pk: { type: String, value: user#${id} }, // 主键模板 sk: { type: String, value: user#${id} }, // 排序键模板 id: { type: String, generate: ulid }, // 自动生成ULID name: { type: String, required: true }, // 必选属性 status: { type: String, default: active }, // 默认值 zip: { type: String }, // 可选属性 // 全局二级索引键 gs1pk: { type: String, value: sec#${name} }, gs1sk: { type: String, value: sec#${id} }, }, }, params: { isoDates: true, // 自动处理日期类型 timestamps: true, // 自动添加created/updated时间戳 }, }, }) 快速入门CRUD操作实战创建实体模型通过表实例获取模型对象用于执行CRUD操作const User table.getModel(User)1. 创建数据Create使用create方法添加新用户let user await User.create({ name: Peter Smith, }) console.log(创建用户:, user)系统会自动生成id、created和updated字段返回的用户对象如下{ id: 01FZ8Z7ZJZJZJZJZJZJZJZJZJ, name: Peter Smith, status: active, created: 1620000000000, updated: 1620000000000, pk: user#01FZ8Z7ZJZJZJZJZJZJZJZJ, sk: user#01FZ8Z7ZJZJZJZJZJZJZJZJ, gs1pk: sec#Peter Smith, gs1sk: sec#01FZ8Z7ZJZJZJZJZJZJZJZJ }2. 读取数据Read使用get方法获取单个用户find方法查询多个用户// 获取单个用户 let user await User.get({ id: 01FZ8Z7ZJZJZJZJZJZJZJZJ }) // 通过索引查询 let users await User.find({ name: Peter Smith }, { index: gs1 }) // 条件查询 let activeUsers await User.find( {}, { where: ${status} {active} } )3. 更新数据Update使用update方法更新用户信息支持多种更新操作// 直接更新属性 await User.update({ id: user.id, status: inactive }) // 使用操作符更新 await User.update( { id: user.id }, { add: { balance: 100 }, set: { status: active } } ) // 删除属性 await User.update({ id: user.id, status: null })4. 删除数据Delete使用remove方法删除用户await User.remove({ id: user.id }) 完整示例CRUD操作流程以下是一个完整的CRUD操作示例来自项目的samples/crud/src/index.js// 创建用户 let user await User.create({ name: Peter Smith }) console.log(创建用户:, user) // 更新用户状态 user await User.update({ id: user.id, status: inactive }) console.log(更新状态:, user) // 查询用户 let users await User.scan({}) console.log(所有用户:, users) // 删除用户 for (let user of users) { await User.remove({ id: user.id }) } 进阶资源官方文档项目提供了详细的文档帮助开发者深入了解单表设计和API使用TypeScript支持Schema规范示例代码项目包含多个示例展示不同场景下的使用方法基础CRUD示例TypeScript示例高级特性示例 最佳实践合理设计Schema充分利用索引和键模板优化查询性能使用TypeScript提供类型安全减少运行时错误避免全表扫描尽量使用索引查询提高效率事务操作复杂更新使用事务保证数据一致性本地测试使用DynamoDB Local进行本地开发测试通过dynamodb-onetable开发者可以轻松应对DynamoDB的单表设计挑战大幅提升开发效率。无论是小型项目还是大型应用都能从中获益。现在就开始你的DynamoDB单表设计之旅吧【免费下载链接】dynamodb-onetableDynamoDB access and management for one table designs with NodeJS项目地址: https://gitcode.com/gh_mirrors/dy/dynamodb-onetable创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考