SuperAPI AI 工具集

atelier-typescript-dynamodb-toolbox

编程与开发

查看项目

更新于 10-16 00:06

技能介绍

用途:在 TypeScript 项目中使用 dynamodb-toolbox v2 实现 DynamoDB 单表设计,覆盖建模、表配置、实体定义、查询与类型安全。

适用判断:资料建议在访问模式已知且稳定、需要可预测的亚 10 毫秒级性能、微服务边界清晰、愿意采用单表设计时使用;原型阶段需求多变、需要临时分析查询、团队缺少 DynamoDB 经验或由 GraphQL 解析器驱动访问模式时应避免。DynamoDB 反转了关系范式:按已知访问模式设计,而非灵活查询。

建模清单:实现前定义实体关系(ERD)、创建实体图表映射各实体到 PK/SK 模式、设计 GSI 策略、记录应用需要的每个查询。

表配置:用 new Table 定义 name、partitionKey、sortKey 和索引。示例中 PK/SK 为 string,GSI1 至 GSI3 为 global 类型,并含 entityAttributeSavedAs。索引用途:主表用于主要实体访问,GSI1 用于集合查询,GSI2 用于实体特定查询与关系,GSI3 用于带时间排序的层级查询。

实体定义:用 new Entity 配合 item({}) 定义 schema;业务属性用 string().required()、.optional()、.validate()、.default();键属性用 .key();计算键通过 .and(_schema => ({...})) 与 .link<typeof _schema>() 从业务属性派生 PK、SK、GSI 键;名称不一致时用 .savedAs()。

类型安全:从 dynamodb-toolbox/entity 引入 InputItem 与 FormattedItem,前者用于写入、后者用于读取,可在实体类中做记录转换。

仓库模式:使用 PutItemCommand 配合条件 { attr: "PK", exists: false } 创建并防重复,exists: true 更新;GetItemCommand 配 .key() 读取;DeleteItemCommand 删除;捕获 ConditionalCheckFailedException 并转换为领域错误。

查询:QueryCommand 配合 .entities() 做类型安全查询,支持指定 partition 与 index、range 的 beginsWith / lt 过滤、reverse、limit 与 exclusiveStartKey 分页;分页令牌可用 base64 编码 LastEvaluatedKey。

事务与测试:资料另设 transactions.md 与 testing.md,涉及多实体事务、原子计数与 DynamoDB Local 测试,但未给出完整细节。

限制:官方文档未提供,收费、价格、平台与效果均暂未提供;具体安装命令亦未在资料中给出。