TypeDORM: DynamoDB 的强类型ORM框架

TypeDORM: DynamoDB 的强类型ORM框架

typedorm Strongly typed ORM for DynamoDB - Built with the single-table-design pattern in mind. 项目地址: https://gitcode.com/gh_mirrors/ty/typedorm

项目介绍

TypeDORM 是一个从零开始构建的基于TypeScript和最新JavaScript特性打造的ORM(对象关系映射)库,专为在DynamoDB上进行复杂且高度关联的数据建模而设计。它以单表设计模式为核心,同时也兼容传统的实体表设计模式。TypeDORM深受TypeORM启发,并向TypeORM及dynamodb-toolbox等项目致敬,借用了装饰器语法,为DynamoDB提供了完全类型安全的ORM体验。目前支持数据映射模式,并强调了全类型的语义化关系架构、声明式的关联模式以及对AWS SDK V2和V3的一致性支持。

项目快速启动

安装TypeDORM及其依赖

首先,确保您的环境已配置Node.js。接着,通过npm安装TypeDORM的核心组件和通用模块:

npm install @typedorm/core @typedorm/common --save

然后,依据您所使用的AWS SDK版本添加相应的依赖:

对于AWS SDK V2:

npm install aws-sdk --save

对于AWS SDK V3:

npm install @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodb --save

还需要安装reflect-metadata来支持装饰器元数据的生成:

npm install reflect-metadata --save

并在入口文件顶部引入它:

import 'reflect-metadata';

配置TypeScript

如果使用TypeScript,确保tsconfig.json中包含以下选项:

{
  "emitDecoratorMetadata": true,
  "experimentalDecorators": true
}

初始化项目

创建一个基本的实体和连接到DynamoDB。

定义实体 (organisation.entity.ts)

import { Attribute, Entity, AutoGenerateAttribute } from '@typedorm/common';
import { AUTO_GENERATE_ATTRIBUTE_STRATEGY } from '@typedorm/common';

@Entity([
  name: 'organisation',
  primaryKey: ['ORG#[[id]]', 'ORG#[[id]]'],
  indexes: [
    // GSI配置
    {
      partitionKey: 'ORG#[[id]]#STATUS#[[status]]',
      sortKey: 'ORG#[[id]]#ACTIVE#[[active]]',
      type: INDEX_TYPE.GSI,
    },
    // 更多索引配置...
  ],
])
export class Organisation {
  @AutoGenerateAttribute({
    strategy: AUTO_GENERATE_ATTRIBUTE_STRATEGY.UUID4,
  })
  id: string;

  @Attribute()
  name: string;
  
  // ...其他属性
  
}

初始化连接

使用AWS SDK V2:

import { createConnection } from '@typedorm/core';
import { DocumentClientV2 } from '@typedorm/document-client';
import AWS from 'aws-sdk';

const documentClient = new DocumentClientV2(new AWS.DynamoDB.DocumentClient());
createConnection({
  table: yourTableNameHere,
  entities: [Organisation],
  documentClient,
});

使用AWS SDK V3:

import { createConnection } from '@typedorm/core';
import { DocumentClientV3 } from '@typedorm/document-client';
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';

const documentClient = new DocumentClientV3(new DynamoDBClient({}));
createConnection({
  table: yourTableNameHere,
  entities: [Organisation],
  documentClient,
});

应用案例和最佳实践

在实际应用中,TypeDORM鼓励使用单表设计模式以提高查询效率并减少读写成本。例如,利用其强大的实体管理和更新操作特性,可以轻松实现复杂的业务逻辑,如自动管理版本更新时间戳、执行条件更新等,确保数据一致性和高效性。

典型生态项目

虽然TypeDORM本身就是一个独立的项目,但它的存在促进了围绕NoSQL数据库特别是DynamoDB的应用开发。它简化了与云原生数据库的集成,使得TypeScript或JavaScript开发者能在保持强类型安全性的同时,高效地进行数据操作。尽管没有特定提到“典型生态项目”,但在使用TypeDORM的项目中,常见的实践包括构建微服务后端、实时数据分析系统或是任何需要灵活且高性能数据库交互的现代Web应用。


以上内容概括了TypeDORM的基本使用流程,包括安装、配置和简单实体操作。深入学习TypeDORM时,建议查阅其官方文档获取更多高级特性和最佳实践。

typedorm Strongly typed ORM for DynamoDB - Built with the single-table-design pattern in mind. 项目地址: https://gitcode.com/gh_mirrors/ty/typedorm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲍凯印Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值