跳到主要内容

rxdb-adapter-sqlite-wasm

RxDB SQLite 适配器,基于 @subframe7536/sqlite-wasm

@aiao/rxdb-adapter-wa-sqlite 共享 @aiao/rxdb-adapter-sqlite-core 中的核心能力;差异在于底层 SQLite WASM 由 subframe 包提供(自定义 wa-sqlite,支持 FTS5 / UPDATE DELETE LIMIT,内置 typesafe VFS 预设)。

何时使用

  • 需要 subframe 提供的增强 SQLite 特性(UPDATE/DELETE LIMIT)
  • 需要类型安全的 VFS 预设
  • 需要更灵活的 VFS 选择(包括 OPFS FileHandle)

与其他 SQLite 适配器对比

特性sqlite-wasmwa-sqlitesqlite-wasm (官方)
底层库@subframe7536/sqlite-wasmwa-sqlite@sqlite.org/sqlite-wasm
UPDATE/DELETE LIMIT
VFS 预设类型安全手动配置手动配置
OPFS FileHandle
包大小~800KB~500KB~1MB

支持的存储(VFS 预设)

vfs 取值说明运行环境
memory纯内存,MemoryVFS主线程/Worker
idbIndexedDB,IDBBatchAtomicVFS主线程/Worker
idb-memory内存 + IndexedDB 镜像,IDBMirrorVFS主线程/Worker
opfsOPFS,OPFSCoopSyncVFS必须 Worker
fs-handle本地文件/OPFS FileHandle,OPFSAnyContextVFS主线程/Worker

安装

npm install @aiao/rxdb @aiao/rxdb-adapter-sqlite-wasm
# 或
pnpm add @aiao/rxdb @aiao/rxdb-adapter-sqlite-wasm

用法

import { RxDB, SyncType } from '@aiao/rxdb';
import { RxDBAdapterSqlite } from '@aiao/rxdb-adapter-sqlite-wasm';

const rxdb = new RxDB({
dbName: 'my-app',
entities: [/* 实体类 */],
sync: {
local: { adapter: 'sqlite-wasm' },
type: SyncType.None
}
});

rxdb.adapter('sqlite-wasm', async db => new RxDBAdapterSqlite(db, { vfs: 'idb' }));

await rxdb.connect('sqlite-wasm');

在 Worker 中运行(opfs VFS 必须 Worker):

// sqlite-wasm.worker.ts
import { SqliteClient } from '@aiao/rxdb-adapter-sqlite-wasm';
import { expose } from 'comlink';

expose(new SqliteClient());
// 主线程:worker / workerInstance 必须成对提供,缺一即抛错
rxdb.adapter(
'sqlite-wasm',
async db =>
new RxDBAdapterSqlite(db, {
vfs: 'opfs',
worker: true,
workerInstance: new Worker(new URL('./sqlite-wasm.worker', import.meta.url), { type: 'module' })
})
);

完整示例

参考 dev-rxdb-angular 中的集成示例。

Classes

ClassDescription
RxDBAdapterSqliteBackend-agnostic base class for SQLite adapters.
RxDBAdapterSqliteErrorRxDB SQLite 适配器错误类
SqliteClient类型安全的同步事件调度器。
SqliteRepository操作 entity 仓库

Interfaces

InterfaceDescription
GenerateSqlResult-
RxDBAdapterSqliteBaseBackend-agnostic base class for SQLite adapters.
SqliteOptionsSQLite 适配器配置接口

Type Aliases

Type AliasDescription
SupportVFS支持的 @subframe7536/sqlite-wasm 存储预设

Variables

VariableDescription
buildRuleGroup生成 ruleGroup sql 查询条件
ROWIDsqlite 行 id 列名
SQLITE_WASM_VFS_LIST-
sqliteGetTableName获取表名
sqliteGetTableNameByMetadata通过元数据获取表名

Functions

FunctionDescription
createSqliteClient-
sqliteLoad加载并初始化 @subframe7536/sqlite-wasm