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),仅供参考

相关新闻

最新新闻

车间移动终端无线互联方案,JM-RS-WIFI 实现 AGV 串口数据远距离稳定传输应用

车间移动终端无线互联方案,JM-RS-WIFI 实现 AGV 串口数据远距离稳定传输应用

一、项目背景随着电商物流、智能制造行业高速发展,自动化立体仓库已全面普及AGV搬运小车完成货物入库、出库、转运、分拣等核心作业。AGV小车作为仓储移动核心设备,搭载车载控制器、磁条阅读器等串口设备,普遍采用RS485串口输出运行数据与状态…

2026/7/22 20:13:15
从安装到运行:NIXL快速上手指南(附C++/Python/Rust多语言示例)

从安装到运行:NIXL快速上手指南(附C++/Python/Rust多语言示例)

从安装到运行:NIXL快速上手指南(附C/Python/Rust多语言示例) 【免费下载链接】nixl NVIDIA Inference Xfer Library (NIXL) 项目地址: https://gitcode.com/gh_mirrors/ni/nixl NVIDIA Inference Xfer Library (NIXL) 是一款高性能的推…

2026/7/22 20:13:15
AI结对编程+每日站会优化,深度拆解SaaS团队实测数据:缺陷率降63%,交付吞吐量翻倍,你还在手动写用户故事吗?

AI结对编程+每日站会优化,深度拆解SaaS团队实测数据:缺陷率降63%,交付吞吐量翻倍,你还在手动写用户故事吗?

更多请点击: https://codechina.net 第一章:AI结对编程每日站会优化的SaaS交付革命 在现代SaaS产品交付中,开发效率与协作质量正被AI深度重构。AI结对编程不再仅是辅助补全代码的工具,而是作为实时协作者嵌入IDE——它理解业务上…

2026/7/22 20:13:15
SpaceClaim改回默认文件格式.scdoc

SpaceClaim改回默认文件格式.scdoc

SpaceClaim默认采用ACIS几何内核建模,默认文件格式为.scdoc。Speos支持ACIS和parasolid两种几何内核建模方法,默认采用parasolid,通常安装speos后,打开speos时会激活parasolid内核,并修改SpaceClaim的默认为.scdocx。导…

2026/7/22 20:13:15
Reqnroll中的依赖注入:Microsoft.Extensions.DependencyInjection使用教程

Reqnroll中的依赖注入:Microsoft.Extensions.DependencyInjection使用教程

Reqnroll中的依赖注入:Microsoft.Extensions.DependencyInjection使用教程 【免费下载链接】Reqnroll Open-source Cucumber-style BDD test automation framework for .NET. 项目地址: https://gitcode.com/gh_mirrors/re/Reqnroll Reqnroll是一个开源的Cuc…

2026/7/22 20:13:15
Kube Eagle高级配置:自定义Prometheus指标命名空间与端口

Kube Eagle高级配置:自定义Prometheus指标命名空间与端口

Kube Eagle高级配置:自定义Prometheus指标命名空间与端口 【免费下载链接】kube-eagle A prometheus exporter created to provide a better overview of your resource allocation and utilization in a Kubernetes cluster. 项目地址: https://gitcode.com/gh_m…

2026/7/22 20:08:15

月新闻