跳到主要内容

restoreSqliteDatabase()

function restoreSqliteDatabase(
source,
input,
options
): Promise<SqliteRestoreOutcome>;

Defined in: packages/rxdb-adapter-sqlite-core/src/backup/restore-sqlite-database.ts:725

把 writeSqliteBackup 产出的归档恢复进一个空的 SQLite 库。

Parameters​

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

Returns​

Promise<SqliteRestoreOutcome>

结束标记、manifest,以及内存目标的连接

Remarks​

只写入空目标,不做合并或覆盖。兼容性(adapter、引擎大版本、虚表模块、系统表 / 变更编码版本、 实体结构指纹、加密认证域)在写入第一条语句之前判定。结构与行在同一个事务里重放,摘要、水位与结构 全部核对通过后才提交;任何失败都回滚。

  • 持久化目标:独占 Web Lock 挡住并发连接与并发恢复,库内标记表挡住「恢复中途页面被关」后的下一次连接。 失败时删掉目标里的一切,目标回到从未恢复过的状态。
  • 内存目标:恢复出来的连接经 SqliteRestoreOutcome.client 交给 adapter 接管。

恢复期间客户端的变更事件是静音的:恢复出来的行不是新变更。输入流在失败时被取消,成功时只释放读锁。

Throws​

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