跳到主要内容

安装

npm install @aiao/rxdb @aiao/rxdb-adapter-sqlite @aiao/utils
npm install @aiao/rxdb-test -D

快速初始化

下面以浏览器内置 SQLite 适配器为例,创建一个最小可运行的 RxDB 实例,并注册实体:

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

// 1. 导入测试用模型
import { Todo } from '@aiao/rxdb-test/entities';

// 2. 创建 RxDB 实例
export async function createRxdb() {
const rxdb = new RxDB({
dbName: 'demo',
entities: [Todo],
// 本地优先,当前仅本地(可扩展远程)
sync: {
local: { adapter: 'sqlite' },
type: SyncType.None
}
});

// 3. 注册适配器(根据浏览器能力选择更优的 VFS 与运行方式)
rxdb.adapter('sqlite', async db => {
let options: SqliteOptions;
const available = await checkOPFSAvailable();
if (available) {
options = {
vfs: 'OPFSCoopSyncVFS',
worker: true,
workerInstance: new Worker(new URL('./sqlite.worker', import.meta.url), {
type: 'module',
name: 'rxdb-worker'
}),
wasmPath: '/wa-sqlite/wa-sqlite.wasm'
};
} else {
options = {
vfs: 'IDBBatchAtomicVFS',
sharedWorker: true,
sharedWorkerInstance: new SharedWorker(new URL('./sqlite-shared.worker', import.meta.url), {
type: 'module',
name: 'rxdb-shared-worker'
}),
wasmPath: '/wa-sqlite/wa-sqlite-async.wasm'
};
}
return new RxDBAdapterSqlite(db, options);
});

// 4. 首次连接会自动创建系统表与实体表
await rxdb.connect('sqlite').toPromise();
return rxdb;
}

提示:

  • 示例中的 worker 与 wasmPath 需要在构建工具中正确处理静态资源路径(参考演示项目 apps/dev-rxdb-*)
  • 非浏览器环境请跳过 checkOPFSAvailable 检查,直接选择合适的 VFS 配置