Skip to content

使用 Drizzle ORM 构建类型安全的 TypeScript 数据库层

通过配置 Drizzle ORM 专家技能,让 AI 帮你设计零运行时开销的 TypeScript 数据库 Schema,并快速实现从复杂关系查询到 Serverless 迁移的完整开发流。

为什么需要这个技能

在 TypeScript 生态中,传统的 ORM(如 Prisma)往往依赖庞大的二进制引擎,这在 Edge Runtime(如 Cloudflare Workers)或 Serverless 环境中会导致严重的冷启动问题。

Drizzle ORM 采用了完全不同的思路:它本质上是一个轻量级的 TypeScript 类型包装层,最终编译为纯 SQL。这意味着你既能享受像 Prisma 一样强大的类型推导和关系查询,又能获得接近原生 SQL 的性能和极小的包体积。掌握此技能可以让开发者在保证类型安全的同时,极大优化应用的响应速度。

适用场景

  • 新项目初始化:快速搭建基于 TypeScript 的数据库访问层。
  • Schema 设计:利用 TypeScript 定义数据库表结构、枚举及关联关系。
  • 复杂数据查询:编写包含 Join、聚合、子查询的高级 SQL 逻辑,或使用 Relational API 实现嵌套查询。
  • Serverless 部署:在 Neon, PlanetScale, Turso 等现代化数据库上实现高效连接。
  • 迁移重构:将项目从 Prisma 或 TypeORM 迁移到 Drizzle 以提升性能。

核心工作流

1. Schema 定义与类型推导

使用 TypeScript-first 的方式定义表结构,并通过 InferSelectModel 自动导出类型,无需手动维护接口。

typescript
export const users = pgTable("users", {
  id: uuid("id").defaultRandom().primaryKey(),
  email: text("email").notNull().unique(),
  name: text("name").notNull(),
});

export type User = InferSelectModel<typeof users>;

2. 灵活的查询模式

Drizzle 提供两种查询方式:一种是标准的 SQL-like API(适用于复杂报表),另一种是 Relational API(适用于快速开发嵌套数据)。

typescript
// SQL-like API: 显式 Join
const results = await db.select().from(posts).innerJoin(users, eq(posts.authorId, users.id));

// Relational API: 类似 Prisma 的嵌套包含
const userWithPosts = await db.query.users.findFirst({
  with: { posts: true },
});

3. 自动化迁移 (Drizzle Kit)

通过 Drizzle Kit 实现从代码到数据库的同步,避免手动编写 SQL 迁移脚本。

bash
# 1. 根据 schema 变更生成迁移文件
npx drizzle-kit generate

# 2. 将迁移应用到生产数据库
npx drizzle-kit migrate

# 3. 启动 GUI 管理界面
npx drizzle-kit studio

下载和安装

下载 drizzle-orm-expert 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐