用途:在 Cloudflare D1(基于 SQLite)上使用 Drizzle ORM,实现类型安全的数据库 schema、迁移与查询,适合部署到 Cloudflare Workers 的服务端项目。
主要能力:
- 使用 drizzle-orm/sqlite-core 的 sqliteTable、text、integer 定义表结构,支持 references 外键与 onDelete 级联。
- 用 relations 单独定义关系,实现类型安全 join 与嵌套查询。
- 通过 drizzle.config.ts 配置 Drizzle Kit,指定 schema 路径、out 目录、dialect: 'sqlite' 与 driver: 'd1-http',凭据走环境变量。
- 在 wrangler.jsonc 的 d1_databases 中设置 binding 与 migrations_dir,让 Wrangler 应用 Drizzle 生成的 SQL 迁移。
- 在 Worker 内用 drizzle(env.DB) 建立连接,执行 select/insert/update/delete,支持 where 条件、.returning()、.get() 与 .all()。
必要用法:安装 npm install drizzle-orm 与 npm install -D drizzle-kit;生成迁移 npx drizzle-kit generate;本地应用 npx wrangler d1 migrations apply my-database --local,先本地验证再执行 --remote。凭据(CLOUDFLARE_ACCOUNT_ID、CLOUDFLARE_DATABASE_ID、CLOUDFLARE_D1_TOKEN)放入 .env,不应提交。
适用场景:需要强类型 SQL 风格查询、自动生成迁移并部署到 D1 的 Cloudflare Workers 项目。
限制与注意事项:D1 不支持 SQL BEGIN TRANSACTION,应改用 db.batch();批处理失败不会自动回滚,需自行错误处理;日期用 integer 配 mode: 'timestamp',动态默认值用 .$defaultFn();D1 不缓存预编译语句;不要混用 Wrangler 与 drizzle-kit migrate,不要在生产用 drizzle-kit push;避免混用 wrangler.toml 与 wrangler.jsonc。具体版本、定价与更多细节以官方资料为准,本文未提供。