用途:这是一个针对 PostgreSQL 的 Drizzle ORM 参考技能,供在 TypeScript 项目中使用 Drizzle 进行数据库开发时查阅。Drizzle 是无头(headless)TypeScript ORM,零依赖,API 接近 SQL,输出单条查询;运行依赖 drizzle-orm,CLI 与迁移使用 drizzle-kit。
主要能力: 模式定义:从 drizzle-orm/pg-core 导入 pgTable、pgEnum 及各列类型(serial、text、integer、uuid、timestamp、jsonb、varchar、boolean、numeric、bigint、geometry、vector 等),支持 index、uniqueIndex、unique、check、primaryKey、foreignKey 等约束。 查询:从 drizzle-orm 导入 eq、ne、gt、gte、lt、lte、and、or、not、isNull、isNotNull、inArray、between、like、ilike、exists、sql、asc、desc 等操作符,进行 SELECT、INSERT、UPDATE、DELETE 与 UPSERT(onConflictDoUpdate)。 关系:用 defineRelations 定义关系,通过 db.query.*.findMany/findFirst 实现单条 SQL 的嵌套预加载。 迁移:使用 drizzle-kit 命令——npx drizzle-kit generate 生成 SQL、npx drizzle-kit migrate 应用、npx drizzle-kit push 直接推送、npx drizzle-kit pull 反向生成、npx drizzle-kit studio 打开可视化界面;配置文件为 drizzle.config.ts。 其他:事务(db.transaction)、条件过滤构造、类型推断($inferSelect、$inferInsert)、drizzle-zod 的 createInsertSchema/createSelectSchema。
使用方式:先通过 drizzle(process.env.DATABASE_URL, { schema, relations }) 或传入已有 pg 的 Pool 建立连接,再定义 schema 与 relations,然后执行查询或迁移。
限制:本资料未提供具体版本要求、性能数据、收费方式与授权信息,相关内容暂未提供。上述用法均需按实际项目配置调整。