跳到主要内容

RxDBAdapterSqliteBase

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:396

与后端无关的 SQLite adapter 基类。

子类负责实现 createClient() 与 adapterName。

Extends​

Implements​

Constructors​

Constructor​

new RxDBAdapterSqliteBase(rxdb, options?): RxDBAdapterSqliteBase;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:464

Parameters​

ParameterType
rxdbRxDB
options?SqliteBaseOptions

Returns​

RxDBAdapterSqliteBase

Overrides​

RxDBAdapterLocalBase.constructor

Properties​

name​

abstract readonly name: string;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:427

适配器名,与 RxDB.adapter() 登记时用的键同值;错误消息与 getAdapter() 都按它认人

Implementation of​

IRxDBAdapter.name


repository_cache​

protected readonly repository_cache: Map<EntityType, RepositoryInstance<EntityType>>;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:300

Inherited from​

RxDBAdapterLocalBase.repository_cache


repository_map​

protected readonly repository_map: Map<string, AdapterRepositoryConstructor<RxDBAdapterSqliteBase, RepositoryInstance<EntityType>>>;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:299

Inherited from​

RxDBAdapterLocalBase.repository_map


rxdb​

readonly rxdb: RxDB;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:298

Inherited from​

RxDBAdapterLocalBase.rxdb

Accessors​

encryption​

Get Signature​

get encryption(): AdapterEncryptionFacade;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:443

Returns​

AdapterEncryptionFacade


encryptionContext​

Get Signature​

get encryptionContext(): EncryptionContext;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:435

Returns​

EncryptionContext


workingTreeCaptureHook​

Get Signature​

get workingTreeCaptureHook():
| WorkingTreeCaptureHook
| undefined;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:330

Internal

捕获运行时;未启用提交能力的库上恒为 undefined。

Returns​

| WorkingTreeCaptureHook | undefined

Inherited from​

RxDBAdapterLocalBase.workingTreeCaptureHook


workingTreeRawWriteContext​

Get Signature​

get workingTreeRawWriteContext(): RawWriteContext;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:353

Internal

本适配器当前的 raw 写判定上下文(adapter-contract.md §2)

Remarks​

rawQuery?() 是这张接口上的可选方法(见上方 IRxDBAdapter),核心包没法像四个挂载点 那样替适配器包住它——判定只能由各适配器自己的 rawQuery 实现调用 gateRawWrite(sql, ctx, …)。 那句调用要的 ctx 由这里交出来,于是六个适配器需要写对的只有「把它转给判定」这一句, 「能力位怎么算」「域从哪来」两个真正容易写歪的问题一次都不会落到它们头上。

能力位直接由捕获运行时装没装上决定,不另存一个布尔:运行时只在能力位为真时被装上 (RxDB.connect() 读到真、或 workingTree.enable() 刚翻开)。再存一份就是第二份真相, 而两份不同步的后果是单向的——门禁以为没开,raw 写全部放行。上下文对象本身在 setWorkingTreeCaptureHook() 里与运行时同一句赋值建好,不是每次取值新建:取值器在每条 raw 语句上都被调用,而它不含 per-call 状态。两个字段只在那一处一起变,「装了新运行时却 交出绑着旧运行时的闭包」因此不是一种可达状态。

交出去的是判定入口本身,不是判定要看的那些东西(域、列集、受信意图)。核心因此不必 复述捕获认什么,也就不存在「拷了一份域出来、插件后续登记的派生索引列只落进其中一份」这类 双份清单——判定自始至终在运行时手上那一份上跑。

Returns​

RawWriteContext

Inherited from​

RxDBAdapterLocalBase.workingTreeRawWriteContext

Methods​

addChangeErrorListener()​

addChangeErrorListener(listener): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:499

订阅变更处理失败。

Parameters​

ParameterTypeDescription
listenerSqliteChangeErrorListener收到 SqliteChangeErrorEvent 的回调,异常会被隔离

Returns​

void

Remarks​

只要注册了监听器,默认的 console.error 降级就交给监听器接管(SQLC-012)。


backup()​

backup(sink, options?): Promise<RxDBBackupResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:653

把整个数据库写成一份可恢复的归档。

Parameters​

ParameterTypeDescription
sinkWritableStream<Uint8Array<ArrayBufferLike>>输出流;成功时被 close,失败时被 abort
optionsRxDBBackupOptions取消信号与排队时限

Returns​

Promise<RxDBBackupResult>

结束标记(条目数、字节数、SHA-256)与 manifest;输出流 close 已完成

Remarks​

归档是逻辑转储:全部结构语句与行字面量,在 adapter 的串行队列里、同一个读事务中取得,所以与某一次 事务提交边界一致,WAL 里已提交的数据都在其中。整个写出过程都占着数据库:输出流有背压时, 这段时间内的读写都会排队。在本 adapter 的事务回调里调用会等待自己,直到 lockTimeoutMs 后报 lock_timeout。

归档包含业务表、系统表、变更历史与 keyring 的密文,加密列保持密文,不需要解锁; 外置文件不在其中(scope.externalFiles === 'excluded')。支持的存储见各 adapter 的 README。

Throws​

RxDBBackupError unsupported_combination / lock_timeout / aborted / io_error / storage_full

Example​

const handle = await showSaveFilePicker({ suggestedName: 'notes.rxdb-backup' });
const result = await adapter.backup(await handle.createWritable());
console.log(result.sha256);

backupStorage()​

protected backupStorage(): SqliteBackupStorage;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1202

当前配置对应的备份存储后端,决定 backup / restore 能否使用以及恢复走哪条路径。

Returns​

SqliteBackupStorage

存储后端

Remarks​

基类默认不支持;已交付的 adapter 按自己的存储选项覆盖。持久化后端的 storageKey 用 persistentBackupStorage 生成,保证同一份库在连接与恢复两侧用同一把锁。


bootstrapTransaction()​

bootstrapTransaction<T>(transactionFun, transactionLog?): Promise<Awaited<ReturnType<T>>>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1035

Internal

引导期事务:与 transaction 相同,但跳过就绪门。

Type Parameters​

Type Parameter
T extends TransactionFun

Parameters​

ParameterTypeDefault valueDescription
transactionFunTundefined事务工作,参数是当前事务 executor
transactionLogbooleantrue是否写事务日志

Returns​

Promise<Awaited<ReturnType<T>>>

Remarks​

仅限 RxDB.connect() 的引导链路(水位线、建表、迁移)与本类内部的引导步骤调用 —— 它们本身就跑在 RxDB.connect() 的 promise 里,等就绪门就是等自己。

表在这一刻可能尚未建出,顺序由引导链路自己保证。事务体内不要调它:门面不改写此方法, 会落到真实适配器上再入队,持槽时二次入队即永久挂起。

Overrides​

RxDBAdapterLocalBase.bootstrapTransaction


cacheRowIdEntity()​

cacheRowIdEntity(rowId, entity): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:929

Parameters​

ParameterType
rowIdbigint
entityany

Returns​

void


cleanAllCache()​

cleanAllCache(): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:951

Returns​

void


cleanupIncompleteRestore()​

cleanupIncompleteRestore(): Promise<boolean>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:733

清理一次没做完的恢复(页面在恢复中途关闭、或恢复失败后清理本身也失败)。

Returns​

Promise<boolean>

确实清理了残留时为 true

Remarks​

必须在连接之前调用。拿不到独占锁说明目标正被连接或正在恢复,报 target_busy; 没有未完成标记时什么都不做。内存存储没有残留可言,恒为 false。

Throws​

RxDBBackupError target_busy / unsupported_combination / cleanup_pending


completeBootstrap()​

completeBootstrap(): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:595

Internal

关闭引导窗:RxDB.connect() 完成建表后调用一次。

Returns​

void

Remarks​

自带就绪门的适配器(SQLite family / PGlite)在引导窗内让 query() / rawQuery() / createTables() 跳过就绪门 —— 那道门等的正是尚未 settle 的 RxDB.connect()。 本方法把状态翻到 ready,此后所有入口一律走正常的就绪等待。 没有就绪门的 adapter 保持默认的 no-op 实现。

Overrides​

RxDBAdapterLocalBase.completeBootstrap


connect()​

connect(): Promise<IRxDBAdapter>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:581

建立连接并把系统表补到当前水位。

Returns​

Promise<IRxDBAdapter>

自身,便于链式使用

Remarks​

建表与系统迁移都在这里发生(见 isCurrentRxDBSystemVersion),因此它可能很慢, 也可能因为库比本进程新而抛 UnsupportedRxDBSystemVersionError。

Implementation of​

IRxDBAdapter.connect


createClient()​

abstract protected createClient(): Promise<SqliteClientLike>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:433

创建或获取 SQLite 客户端。 具体 adapter 用各自后端的逻辑实现此方法。

Returns​

Promise<SqliteClientLike>


createRestoreTargetClient()​

protected createRestoreTargetClient(): Promise<SqliteClientLike>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1240

打开恢复或清理用的目标连接。

Returns​

Promise<SqliteClientLike>

目标库的一条新连接

Remarks​

默认就是 createClient:浏览器后端的库只会在同源上下文里被打开,恢复前拿到的独占 Web Lock 已经挡住了其余所有连接。库文件还可能被别的进程打开的后端(桌面 host)覆盖它,在返回前让这条连接 独占底层存储并一直持有到断开,保证从空状态检查到恢复结束都没有别人连得上。


createTables()​

createTables<T>(EntityTypes, entities?): Promise<boolean>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:768

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
EntityTypesT[]
entities?InstanceType<T>[]

Returns​

Promise<boolean>

Overrides​

RxDBAdapterLocalBase.createTables


createUncachedRepository()​

createUncachedRepository<T>(EntityType, host): IRepository<T>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:567

Internal

新建一个绑定到 host 的仓库,不写入 repository_cache。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterTypeDescription
EntityTypeT实体类型
hostRxDBAdapterSqliteBase仓库要绑定到的适配器(事务场景下是 executor 的门面)

Returns​

IRepository<T>

Remarks​

供 SqliteTransactionExecutor.getRepository 使用。之所以必须绕开缓存:缓存里的仓库 生命周期与适配器一样长,若把事务作用域的仓库写进去,事务结束后它仍留在缓存里指向一个 已提交/已回滚的事务上下文,之后的外部写会打到那上面。


deleteByIds()​

deleteByIds(entityName, ids): Observable<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1171

按 ID 列表批量删除(QueryCache 专用)

用于清理本地缓存中已被远程删除的数据。

Parameters​

ParameterTypeDescription
entityNamestring实体名称
idsstring[]要删除的 ID 列表

Returns​

Observable<void>

Observable<void>

Example​

adapter.deleteByIds('Product', ['p1', 'p2']).subscribe();

Overrides​

RxDBAdapterLocalBase.deleteByIds


disconnect()​

disconnect(): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:599

断开连接并释放底层句柄。

Returns​

Promise<void>

Remarks​

与 RxDB.destroy() 不同,断开是可逆的:同一个适配器实例之后还能再 connect()。 实现须幂等——未连接时调用是空操作而不是抛错。

Implementation of​

IRxDBAdapter.disconnect


emitChangeError()​

emitChangeError(event): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:521

报告一次变更处理失败。

Parameters​

ParameterTypeDescription
eventSqliteChangeErrorEvent失败详情

Returns​

void

Remarks​

由变更处理管线(handle_rxdb_change)调用,不面向应用代码。本方法永不抛出: 它所在的路径没有调用方能接住异常,抛出只会变成 unhandled rejection。


getEntityByRowId()​

getEntityByRowId(rowId, EntityType): any;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:943

Parameters​

ParameterType
rowIdbigint
EntityTypeEntityType

Returns​

any


getMetadataByIds()​

getMetadataByIds(entityName, ids): Observable<Map<string, string>>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1106

获取指定 ID 列表的元数据(QueryCache 专用)

用于本地缓存新鲜度检查,返回 ID → updatedAt 映射。

Parameters​

ParameterTypeDescription
entityNamestring实体名称
idsstring[]实体 ID 列表

Returns​

Observable<Map<string, string>>

Observable<Map<string, string>> - ID → updatedAt 映射

Example​

adapter.getMetadataByIds('Product', ['p1', 'p2'])
.subscribe(map => {
// map: Map `{ 'p1' => '2026-01-12T10:00:00Z', 'p2' => '2026-01-12T09:30:00Z' }`
});

Overrides​

RxDBAdapterLocalBase.getMetadataByIds


getRepository()​

getRepository<T, RT>(EntityType): RT;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:540

取该实体在本适配器上的仓储实例。

Type Parameters​

Type ParameterDefault type
T extends EntityType-
RTSqliteRepository<T>

Parameters​

ParameterType
EntityTypeT

Returns​

RT

Remarks​

返回的是适配器轴的仓储(见 AdapterRepositoryConstructor), 与用户通常拿到的门面仓储 RxDB.getRepository() 不是同一个对象。

Implementation of​

IRxDBAdapter.getRepository

Overrides​

RxDBAdapterLocalBase.getRepository


getRowIdByEntity()​

getRowIdByEntity(entity): bigint | undefined;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:947

Parameters​

ParameterType
entityany

Returns​

bigint | undefined


getRxDBChangeSequence()​

getRxDBChangeSequence(): Promise<number>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1072

Returns​

Promise<number>

Overrides​

RxDBAdapterLocalBase.getRxDBChangeSequence


internalQuery()​

internalQuery(sql, bindings?): Promise<SqliteSuccessResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1068

Parameters​

ParameterType
sqlstring
bindings?SQLiteCompatibleType[]

Returns​

Promise<SqliteSuccessResult>


isEncryptedAtRest()​

isEncryptedAtRest(value): boolean;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:487

判定一个落库值是否已处于加密后的 at-rest 形态(FR-038)。

Parameters​

ParameterTypeDescription
valueunknown落库列里的值

Returns​

boolean

是信封串时为 true

Remarks​

权威判定器只有一份,就是 @aiao/rxdb-adapter-encrypted 的 isEnvelope——本方法是 核心那个可选槽位(RxDBAdapterLocalBase.isEncryptedAtRest)到它的一句转发, 不在这里另认一套形状。@aiao/rxdb 不能依赖加密包(依赖方向是反的),所以这一句 只能落在适配器侧。

Overrides​

RxDBAdapterLocalBase.isEncryptedAtRest


isTableExisted()​

isTableExisted<T>(EntityType): Promise<boolean>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:760

该实体对应的表在库里是否已存在。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
EntityTypeT

Returns​

Promise<boolean>

Remarks​

问的是物理表,不是元数据里有没有登记这个实体。

Implementation of​

IRxDBAdapter.isTableExisted

Overrides​

RxDBAdapterLocalBase.isTableExisted


mergeChanges()​

mergeChanges(
actions,
localChanges?,
disableTriggers?
): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:920

应用压缩后的变更到本地实体表

实现策略(SQLite):

  1. 将 actions 转换为 SQL 操作
  2. 在事务中: a) 执行 SQL 操作实体表(INSERT/UPDATE/DELETE) b) 批量插入 localChanges 到 RxDBChange 表(用于历史追踪)
  3. 发送本地事件通知 UI 更新

Parameters​

ParameterTypeDefault valueDescription
actionsSwitchVersionActionsundefined压缩后的变更操作集合(从远程 pull 来的)
localChanges?Omit<RxDBChange, "id">[]undefined需要保存到本地 RxDBChange 表的记录(可选)
disableTriggers?booleanfalse是否禁用触发器(用于 pull 等操作,避免创建 RxDBChange)

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.mergeChanges


migrateSystemSchema()​

migrateSystemSchema(): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:787

在应用迁移或仓储运行前升级 RxDB 拥有的表。 不需要持久化系统 schema 状态的 adapter 保持默认的 no-op 实现。

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.migrateSystemSchema


mutations()​

mutations<T>(options): Promise<InstanceType<T>[]>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:753

批量修改实体(创建/更新/删除)

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
optionsRxDBMutationsMap<T>

Returns​

Promise<InstanceType<T>[]>

Implementation of​

IRxDBAdapter.mutations


persistentBackupStorage()​

protected persistentBackupStorage(label): SqliteBackupStorage;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1212

生成持久化存储后端的描述。

Parameters​

ParameterTypeDescription
labelstring写进 manifest 的存储名,例如 idb / opfs

Returns​

SqliteBackupStorage

storageKey 为 <adapter>:<label>:<dbName> 的持久化后端


physicalTableNames()​

physicalTableNames(metadata): readonly string[];

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:912

SQLite 家族把命名空间折进表名:public$todos。

Parameters​

ParameterTypeDescription
metadataEntityMetadata实体元数据

Returns​

readonly string[]

逻辑名(基类那一份)加上本家族真正建出来的那个名字

Remarks​

覆写的全部意义是让规则只有一份:名字由 get_table_name_by_metadata 给出, 与建表、查询、触发器用的是同一个函数。在它之前,@aiao/rxdb-plugin-working-tree 的 版本化域按 '$' 自己拼了一份;拼法一改,那份不会报错,只会开始认不出这张表,于是 raw 写门禁对它静默放行。

保留基类给的逻辑名而不是只交折叠名:raw 判定宁可多认一个名字——多认只是多挡下 一条在本后端本来也跑不通的语句;少认的那一个恰好是绕过捕获的写会用的名字。

Overrides​

RxDBAdapterLocalBase.physicalTableNames


query()​

query(sql, bindings?): Promise<SqliteSuccessResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:956

Parameters​

ParameterType
sqlstring
bindings?SQLiteCompatibleType[]

Returns​

Promise<SqliteSuccessResult>


rawQuery()​

rawQuery(sql, params?): Promise<RawQueryResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:995

原始 SQL。

Parameters​

ParameterType
sqlstring
params?unknown[]

Returns​

Promise<RawQueryResult>

Remarks​

judgment 由核心包出,这里只负责接上(adapter-contract.md §2)。rawQuery?() 在 IRxDBAdapter 上是可选方法,核心包没法像四个捕获挂载点那样替适配器包住它,于是这一句 gateRawWrite 是本类唯一要写对的地方。判定本身一个字都不在这里重写——六份实现里只要有一份 把词法归一化写松,整条防线就有洞,而那个洞不会在任何一个后端自己的测试里现形。

这一句覆盖 5 个 v1 适配器(wa-sqlite / sqlite-wasm / sqlite / sqliteai / electron): 它们都继承本类且都不覆写 rawQuery。在五个子类里各写一遍是 T064「不各写一份」明确排除的 形态;哪天某个子类真的覆写了 rawQuery,它就得自己接上,这一点由 T068 的 6 个一致性调用点兜住。

门禁包在整个方法体外面,两条生命周期分支都在里面:拒绝发生在语句下发之前,连事务都不会开, 业务表零变化——不是写完再回滚。引导窗内捕获运行时还没装上,判定第 1 步放行,行为与接入前逐字一致。

Implementation of​

IRxDBAdapter.rawQuery


ready()​

protected ready(): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1258

就绪门:必须在获取队列槽位之前调用,绝不能在队列任务内部调用。

Returns​

Promise<void>

Remarks​

队列并发度为 1。在临界区里等 RxDB.connect() 会成环:RxDB.connect() 的首装路径要靠 队列后方的水位线事务才能完成,而那个事务永远拿不到被占住的槽位(实测轨迹见设计文档 §1.2)。

门等的是整个 RxDB.connect(),不是「本适配器的 client 连上了没」。两者之间隔着建表、 系统迁移与水位线;曾经按 client 状态放行,于是这段窗口内到达的外部写直接打在还没建出来的 表上(no such table)。RxDB.connect() 自身按名字缓存 promise,已完成时这里只是多一次 微任务跳转。

引导链路自己不得走这道门(那是等自己),一律经 bootstrapTransaction。


reconcileEntityIndexes()?​

optional reconcileEntityIndexes(EntityTypes): Promise<void>;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:479

在用户迁移和缺表补建后幂等收敛实体索引。

Parameters​

ParameterType
EntityTypesEntityType[]

Returns​

Promise<void>

Inherited from​

RxDBAdapterLocalBase.reconcileEntityIndexes


removeCacheEntity()​

removeCacheEntity(entity): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:934

Parameters​

ParameterType
entityany

Returns​

void


removeChangeErrorListener()​

removeChangeErrorListener(listener): void;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:508

取消 addChangeErrorListener 的订阅。

Parameters​

ParameterTypeDescription
listenerSqliteChangeErrorListener注册时传入的同一个函数引用

Returns​

void


removeMany()​

removeMany<T>(entities): Promise<InstanceType<T>[]>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:745

批量删除实体。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
entitiesInstanceType<T>[]

Returns​

Promise<InstanceType<T>[]>

被删除的实体

Implementation of​

IRxDBAdapter.removeMany


repository()​

protected repository<RT>(repositoryName, RepositoryClass): void;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:303

Type Parameters​

Type Parameter
RT extends RepositoryInstance<EntityType>

Parameters​

ParameterType
repositoryNamestring
RepositoryClassAdapterRepositoryConstructor<RxDBAdapterSqliteBase, RT>

Returns​

void

Inherited from​

RxDBAdapterLocalBase.repository


restore()​

restore(source, options?): Promise<RxDBRestoreResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:704

把 backup 产出的归档恢复进本 adapter 配置的空存储。

Parameters​

ParameterTypeDescription
sourceReadableStream<Uint8Array<ArrayBufferLike>>归档字节流
optionsSqliteRestoreOptions取消信号与阶段回调

Returns​

Promise<RxDBRestoreResult>

结束标记与 manifest

Remarks​

必须在 rxdb.connect() 之前调用(经 rxdb.getAdapter(name) 拿到尚未连接的实例):已连接或正在恢复时 报 target_busy。只写入空目标,兼容性(adapter、引擎大版本、虚表模块、系统表 / 变更编码版本、 实体结构指纹、加密认证域)在写入第一条语句之前判定,全部核对通过后才提交。

  • 持久化存储:恢复完成后正常 rxdb.connect() 即可;恢复中途页面被关,之后的连接报 restore_incomplete, 需先 cleanupIncompleteRestore。
  • 内存存储:恢复出来的库只活在本实例里,由下一次 rxdb.connect() 接管;不连接时 disconnect 释放它。

恢复出来的行不产生变更历史;加密库保持锁定。输入流在失败时被取消,成功时只释放读锁。

Throws​

RxDBBackupError 见 RxDBBackupErrorCode;cleanup_pending 表示失败后连清理也没做完

Example​

rxdb.adapter('wa-sqlite', db => new RxDBAdapterWaSqlite(db, { vfs: 'IDBBatchAtomicVFS' }));
const adapter = await rxdb.getAdapter('wa-sqlite');
await adapter.restore(file.stream());
await rxdb.connect('wa-sqlite');

runInTransaction()​

runInTransaction<T>(transactionFun, transactionLog?): Promise<Awaited<ReturnType<T>>>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1055

执行事务工作。

Type Parameters​

Type Parameter
T extends TransactionFun

Parameters​

ParameterTypeDefault valueDescription
transactionFunTundefined事务工作,参数是当前事务 executor
transactionLogbooleantrue-

Returns​

Promise<Awaited<ReturnType<T>>>

事务工作的返回值

Remarks​

真实适配器入口总是新开事务;executor 门面会把事务内的 runInTransaction() 映射为 executor.run(),复用当前事务且不重新入队。

Overrides​

RxDBAdapterLocalBase.runInTransaction


saveMany()​

saveMany<T>(entities): Promise<InstanceType<T>[]>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:737

批量写入实体(不存在则插入,存在则更新)。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
entitiesInstanceType<T>[]

Returns​

Promise<InstanceType<T>[]>

落库后的实体;主键、数据库端默认值等由库回填的字段在这里才有值

Implementation of​

IRxDBAdapter.saveMany


setRxDBChangeSequence()​

setRxDBChangeSequence(sequence): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1078

Parameters​

ParameterType
sequencenumber

Returns​

Promise<void>


setWorkingTreeCaptureHook()​

setWorkingTreeCaptureHook(hook): void;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:371

Internal

装上或卸下捕获运行时(adapter-contract.md §1 的四个挂载点)。

Parameters​

ParameterTypeDescription
hook| WorkingTreeCaptureHook | undefined接管四个挂载点的运行时;undefined 卸载

Returns​

void

Remarks​

挂载装在这里而不是让六个适配器各自在自己的 transaction() 里插一句:少写一次、 写晚一次(在业务写之后才校验 token)都没有任何东西能发现,而那正是 §2「判定实现只有 一份」要排除的形态。

调用方是 RxDB.connect()(确认能力位为真之后)与 workingTree.enable()(翻位成功 之后)。未启用的库上一次都不会被调用,于是四个写原语连一层转发都没有。

幂等:已经装过就先卸下再装,不会叠成两层。

Inherited from​

RxDBAdapterLocalBase.setWorkingTreeCaptureHook


shadowTablesWritable()​

protected shadowTablesWritable(): boolean;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1226

本后端能否写虚表的影子表(FTS5 的 _data、_idx 等)。

Returns​

boolean

能写为 true

Remarks​

归档按行原样保存影子表,恢复时要整表改写它们。默认可以;以 defensive 模式运行 SQLite 的后端改不了影子表, 覆盖为 false:含影子表的库备份与恢复都报 unsupported_combination,而不是产出一份自己恢复不了的归档, 或写到一半才失败。


switchBranch()​

switchBranch(options): Promise<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:916

Parameters​

ParameterType
optionsSwitchBranchOptions

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.switchBranch


transaction()​

transaction<T>(transactionFun, transactionLog?): Promise<Awaited<ReturnType<T>>>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1009

Type Parameters​

Type Parameter
T extends TransactionFun

Parameters​

ParameterTypeDefault value
transactionFunTundefined
transactionLogbooleantrue

Returns​

Promise<Awaited<ReturnType<T>>>

Overrides​

RxDBAdapterLocalBase.transaction


upsertMany()​

upsertMany<T>(entityName, data): Observable<void>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:1136

批量 upsert 数据(QueryCache 专用)

执行 INSERT OR REPLACE 语义,用于缓存远程拉取的数据。

Type Parameters​

Type Parameter
T

Parameters​

ParameterTypeDescription
entityNamestring实体名称
dataT[]要写入的数据列表

Returns​

Observable<void>

Observable<void>

Example​

adapter.upsertMany('Product', [product1, product2]).subscribe();

Overrides​

RxDBAdapterLocalBase.upsertMany


version()​

version(): Promise<string>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:625

底层数据库引擎的版本号(如 SQLite 的 3.45.0),用于诊断与能力判断。

Returns​

Promise<string>

Remarks​

与系统表水位号(RXDB_SYSTEM_SCHEMA_VERSION)无关,那是 RxDB 自己的号。

Implementation of​

IRxDBAdapter.version


writeQuery()​

writeQuery(sql, bindings?): Promise<SqliteSuccessResult>;

Defined in: packages/rxdb-adapter-sqlite-core/src/RxDBAdapterSqliteBase.ts:969

Parameters​

ParameterType
sqlstring
bindings?SQLiteCompatibleType[]

Returns​

Promise<SqliteSuccessResult>