用途:为 Node.js 项目提供 better-sqlite3 的同步 SQLite 使用模式,比异步 sqlite3 包更快更简单,适合需要本地数据库的 Node、Electron、Tauri 应用。
主要能力:同步 API、原生同步事务、可复用预编译语句、WAL 等性能 pragma、版本化迁移、批量插入优化、.pluck()/.raw() 读取优化、Drizzle ORM 集成与 TypeScript 类型支持。
安装:npm install better-sqlite3;npm install --save-dev @types/better-sqlite3。Electron/Tauri 需重建原生模块:npm install --save-dev electron-rebuild,npx electron-rebuild -f -w better-sqlite3;或在 package.json 的 build 中设 "npmRebuild": true。
用法要点:用 new Database("app.db") 打开连接,连接时执行 db.pragma("journal_mode = WAL")、synchronous = NORMAL、foreign_keys = ON 等;用 db.exec 建表建索引;用 db.prepare 预编译语句并复用,.get()/.all()/.run() 执行;多步操作放入 db.transaction(),嵌套事务使用 SAVEPOINT;Drizzle 通过 drizzle(sqlite, { schema }) 接入。
适用场景:Electron/Tauri 桌面应用、本地优先应用、读多写少或需同步事务的 Node 服务。
限制与注意:SQLite 无布尔类型,需用 0/1;日期建议存 INTEGER 或 TEXT,避免 REAL;WAL 按连接生效,多进程需各自设置,写入仍串行;Electron 中原生 .node 文件必须针对其 Node 版本编译,否则报找不到模块;monorepo/pnpm 下需注意重建。
资料还提到在 progress.txt 的 BUILD 阶段追加 database、orm、schema_complete、migrations_run 等字段,供后续构建步骤确认数据库阶段完成。