跳到主要内容

SQLite

安装​

  • 对于 Better SQLite:
npm install better-sqlite3
  • 对于 sql.js:
npm install sql.js
  • 对于 Capacitor、Cordova、Expo、NativeScript 和 React Native,请查看 支持的平台。

数据源选项​

有关常用数据源选项,请参见 数据源选项。

better-sqlite3 数据源选项​

  • database - 数据库路径。例如, "mydb.sqlite"。
  • enableWAL - 启用 WAL 模式(默认 false)。详见 SQLite WAL 模式。
  • fileMustExist - 如果数据库不存在,则抛出错误,不会创建新文件。不影响内存或只读连接(默认 false)。
  • key - SQLCipher 的加密密钥。
  • nativeBinding - 原生插件的相对或绝对路径(better_sqlite3.node)。
  • prepareDatabase - 在 typeorm 使用数据库前调用的函数。你可以在这里访问原生的 better-sqlite3 Database 对象。
  • readonly - 以只读模式打开数据库连接(默认 false)。
  • statementCacheSize - SQLite 语句缓存大小,用于加快查询速度(默认 100)。
  • timeout - 在数据库锁定时,执行查询等待的毫秒数,超过后抛出 SQLITE_BUSY 错误(默认 5000)。
  • verbose - 函数,会在数据库连接执行每条 SQL 语句时调用,接收 SQL 字符串。

sql.js 数据源选项​

  • database:待导入的原始 UInt8Array 格式数据库。
  • sqlJsConfig:可选的 sql.js 初始化配置。
  • autoSave:启用自动持久化数据库更改,需要指定 location 或 autoSaveCallback。设置为 true 时,每次更改都会保存到文件系统(Node.js)或 localStorage/indexedDB(浏览器),如果指定了 location,否则调用 autoSaveCallback。
  • autoSaveCallback:启用 autoSave 后,当数据库发生更改时调用的函数。函数接收表示数据库的 UInt8Array。
  • location:加载和保存数据库的文件位置。
  • useLocalForage:启用使用 localforage 库,从 indexedDB 异步保存和加载数据库,取代浏览器环境中的同步 local storage 方法。需要将 localforage node 模块添加到项目中,并在页面中导入 localforage.js。

capacitor 数据源选项​

  • database - 数据库名称(capacitor-sqlite 会自动添加后缀 SQLite.db)
  • driver - capacitor-sqlite 实例。例如,new SQLiteConnection(CapacitorSQLite)。
  • mode - 设置数据库加密模式:"no-encryption" | "encryption" | "secret" | "newsecret"
  • version - 数据库版本
  • journalMode - SQLite 日志模式(可选)

cordova 数据源选项​

expo 数据源选项​

  • database - 数据库名称。例如,"mydb"。
  • driver - Expo SQLite 模块。可选 — TypeORM 会自动加载 expo-sqlite。仅在需要自定义实例时显式传入(例如,已打补丁的分支)。

nativescript 数据源选项​

  • database - 数据库名称

react-native 数据源选项​

列类型​

int, int2, int8, integer, tinyint, smallint, mediumint, bigint, decimal, numeric, float, double, real, double precision, datetime, varying character, character, native character, varchar, nchar, nvarchar2, unsigned big int, boolean, blob, text, clob, date, json, jsonb

TypeORM 在 SQLite 中支持 json 和 jsonb 两种类型:

  • json 存储为 TEXT。
  • jsonb 存储为 SQLite 的二进制 JSON 格式。TypeORM 在持久化期间自动使用 jsonb() 函数包装值,并在检索期间使用 json() 函数,以提供透明支持和更好的性能。

JSONB 支持需要 SQLite 3.45.0 或更高版本。当使用 jsonb 列类型时,TypeORM 将在数据库模式中使用 jsonb 类型,SQLite 在内部将其作为二进制 BLOB 处理。