SuperAPI AI 工具集

drizzle-orm-d1

编程与开发

查看项目

更新于 10-16 03:14

技能介绍

用途:在 Cloudflare Workers 上用 Drizzle ORM 操作 D1(基于 SQLite)数据库,获得完整 TypeScript 类型推断的查询体验,并用 Drizzle Kit 生成迁移、由 Wrangler 应用迁移。

主要能力:类型安全的 select/insert/update/delete 与 .returning();用 sqliteTable 定义 schema,用 relations 定义关系以支持类型安全 join;用 drizzle-kit generate 生成版本化 SQL 迁移;通过 Wrangler 的 migrations_dir 指向 ./migrations 并执行迁移;用 db.batch() 替代事务。

必要用法:安装 npm install drizzle-orm 与 npm install -D drizzle-kit;在项目根创建 drizzle.config.ts,设置 dialect: 'sqlite'、driver: 'd1-http',凭据用环境变量;在 wrangler.jsonc 配置 d1_databases 的 binding 与 migrations_dir;生成并应用迁移:npx drizzle-kit generate,npx wrangler d1 migrations apply my-database --local,确认后再用 --remote;Worker 中 import { drizzle } from 'drizzle-orm/d1',用 drizzle(env.DB) 查询,单条结果用 .get(),多条用 .all()。

适用场景:Cloudflare Workers 上的无服务器应用、需要类型安全 SQL 与迁移管理的 D1 项目。

限制与注意:D1 不支持 SQL BEGIN TRANSACTION,需用 db.batch();D1 无原生日期类型,日期用 integer 配 mode: 'timestamp';动态默认值用 .$defaultFn() 而非 .default();不要混用 wrangler d1 migrations apply 与 drizzle-kit migrate,生产不要用 drizzle-kit push;不要依赖预处理语句缓存;迁移先在本地测试;凭据不要硬编码或提交。资料还列出 12 个已知问题及规避方式,涉及外键约束、模块导入、绑定缺失、迁移失败、类型推断过深、严格模式报错、配置文件位置、本地与远程混淆、wrangler.toml 与 wrangler.jsonc 混用等。具体版本与依赖信息以资料为准,未提供的细节暂未提供。