用途:在 TypeScript 项目中用 Drizzle ORM 进行类型安全的数据库开发,覆盖 schema 定义、查询、关系、迁移等场景。适用于 PostgreSQL、MySQL、SQLite、Cloudflare D1 与 Durable Objects。
主要能力:用 pgTable/sqliteTable 等定义表;通过 $inferSelect、$inferInsert 推断类型,无需手写接口;用 relations 定义一对多、多对一关系;支持类 SQL 查询(select、where、and/or、joins、orderBy、limit)与关系查询(db.query.*.findMany/findFirst、with、columns);支持 insert、批量插入、onConflictDoUpdate 上插、update、delete 及 returning;支持 db.transaction 事务。参考文档另含实体模式与仓储模式、以及按数据库拆分的连接、迁移、列类型、错误码等指南。
必要用法:先检查所属包与已有实现,复用既有类型、辅助函数、错误与测试工具;推断的请求与行类型用 type-only 导入,避免创建镜像类型。查询、事务、写入谓词与驱动错误分类保持在仓储中,服务编排用例,路由负责校验与序列化。优先使用数据库约束与驱动行为。示例:const allUsers = await db.select().from(users);关系查询需将 schema 传给 drizzle(pool, { schema })。
限制:上述模式是可选方案而非实现清单,仅在当前任务需要时引入;索引、迁移、重试或连接池定制需有明确的查询或运维需求;乐观锁仅在存在并发需求时添加;连接关闭使用驱动的生命周期 API。Effect PostgreSQL 需确认兼容的 Effect v4 对等依赖。具体安装命令与版本未提供。