跳到主要内容

RxDBAdapterPGlite

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:105

RxDB PGlite 适配器

基于 PGlite(WebAssembly PostgreSQL)的本地存储适配器 提供完整的关系型数据库功能,包括:

  • 实体持久化和查询
  • 事务管理
  • 分支管理(用于多版本数据管理)
  • 变更历史追踪

Extends​

Implements​

Constructors​

Constructor​

new RxDBAdapterPGlite(rxdb, options): RxDBAdapterPGlite;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:179

Parameters​

ParameterType
rxdbRxDB
optionsPGliteClientOptions

Returns​

RxDBAdapterPGlite

Overrides​

RxDBAdapterLocalBase.constructor

Properties​

changeErrors$​

readonly changeErrors$: Observable<Error>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:149

PGlite NOTIFY 变更处理错误流。


name​

name: string = ADAPTER_NAME;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:146

适配器名称

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<RxDBAdapterPGlite, 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-pglite/src/RxDBAdapterPGlite.ts:159

Returns​

AdapterEncryptionFacade


encryptionContext​

Get Signature​

get encryptionContext(): EncryptionContext;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:151

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​

backup()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:650

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

Parameters​

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

Returns​

Promise<RxDBBackupResult>

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

Remarks​

快照在 adapter 的串行队列里、以 PGlite 独占锁 + CHECKPOINT 取得,所以归档与某一次事务提交 边界一致。整个写出过程都占着数据库:输出流有背压时(慢速磁盘、网络上传),这段时间内的 读写都会排队,调用方应把输出接到足够快的目标上。在本 adapter 的事务回调里调用会等待自己, 直到 lockTimeoutMs 后报 lock_timeout。

归档包含整个数据目录(业务表、系统表、keyring 的密文),加密列保持密文,不需要解锁。 目前支持 memory 与 idb:// 存储,以及覆写了 backupStorage 的桌面代理子类; OPFS-AHP(Worker)报 unsupported_combination。 idb:// 存储同时被其他连接(同页面另一个实例、其他标签页或 Worker)打开时报 target_busy: 每个连接各有一份内存视图,本连接的快照看不到它们的提交。

Throws​

RxDBBackupError unsupported_combination / target_busy / 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);

backupExtensions()​

protected backupExtensions(): Promise<readonly string[]>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:767

备份 manifest 记录的扩展名(已排序)。

Returns​

Promise<readonly string[]>

扩展名

Remarks​

默认取 adapter 选项里注册的扩展;桌面代理子类覆写为 host 运行时实际加载的扩展。


backupStorage()​

protected backupStorage(): string;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:754

备份 manifest 记录的存储后端。

Returns​

string

存储后端标识

Remarks​

默认按 dataDir 解析,只接受 memory 与 idb://;桌面代理子类覆写为 host 上的目录存储。 在排队与连接之前调用,不支持的存储不会占用数据库。

Throws​

RxDBBackupError unsupported_combination 当前存储不支持备份


bootstrapTransaction()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:605

Internal

引导期事务:跳过就绪门。仅限 RxDB.connect() 链路。

Type Parameters​

Type Parameter
T extends TransactionFun

Parameters​

ParameterTypeDefault value
transactionFunTundefined
transactionLogbooleantrue

Returns​

Promise<Awaited<ReturnType<T>>>

Overrides​

RxDBAdapterLocalBase.bootstrapTransaction


completeBootstrap()​

completeBootstrap(): void;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:390

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-pglite/src/RxDBAdapterPGlite.ts:367

连接到数据库

Returns​

Promise<IRxDBAdapter>

适配器实例

Implementation of​

IRxDBAdapter.connect


createClient()​

protected createClient(): IPGliteClient;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:732

创建底层客户端。子类覆写它即可换掉整条数据通路。

Returns​

IPGliteClient

尚未 init() 的客户端实例

Remarks​

这是 US-208 桌面适配器唯一需要的接缝:Electron 下的客户端把 query/exec/transaction 转发给主进程的单实例 PGlite,其余生命周期与变更管线完全复用本类。返回的对象只需满足 IPGliteClient;若它同时是变更事件源(见 asPGliteChangeEventSource), connect() 会自动挂上 NOTIFY 监听,disconnect() 会解绑。


createTables()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:507

创建数据库表。建表走引导链路,不能等就绪门。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterTypeDescription
EntityTypesT[]实体类型数组
entities?InstanceType<T>[]初始化数据(可选)

Returns​

Promise<boolean>

是否成功创建

Remarks​

变更触发器分两步:create_tables_statements 先按根分支生成(纯生成器,没有连接,读不到当前 分支),跑完之后再由本方法按库此刻停在的分支重挂一次。两步都在同一个事务里,外面看不到 中间态。合成一步要么让纯生成器长出一次数据库读,要么让调用方先读——而能读到答案的时刻恰好 在建表语句之后(见 readBranchIdForNewTables)。

重挂范围收窄到 EntityTypes,理由见 generateBranchTriggerSqlFor。

Overrides​

RxDBAdapterLocalBase.createTables


createUncachedRepository()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:459

Internal

新建绑定到 host 的仓库,不写入缓存。 事务作用域的仓库不能进 #repository_cache。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
entityT
hostRxDBAdapterPGlite

Returns​

IRepository<T>


deleteByIds()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:254

QueryCache 按 id 批量删除。

Parameters​

ParameterType
entityNamestring
idsstring[]

Returns​

Observable<void>

Overrides​

RxDBAdapterLocalBase.deleteByIds


disconnect()​

disconnect(): Promise<void>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:399

断开数据库连接

清理资源并发送销毁信号

Returns​

Promise<void>

Implementation of​

IRxDBAdapter.disconnect


getMetadataByIds()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:204

QueryCache:id → updatedAt。物理定位经 resolveQueryCacheTarget(PGL-012)。

Parameters​

ParameterType
entityNamestring
idsstring[]

Returns​

Observable<Map<string, string>>

Overrides​

RxDBAdapterLocalBase.getMetadataByIds


getRepository()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:471

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

Type Parameters​

Type ParameterDefault type
T extends EntityType-
RTIRepository<T>

Parameters​

ParameterType
entityT

Returns​

RT

Remarks​

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

Implementation of​

IRxDBAdapter.getRepository

Overrides​

RxDBAdapterLocalBase.getRepository


getRxDBChangeSequence()​

getRxDBChangeSequence(): Promise<number>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:284

RxDBChange 序列当前值。 契约对齐 sqlite_sequence:返回最后已用 id;is_called=false 时减 1。

Returns​

Promise<number>

Overrides​

RxDBAdapterLocalBase.getRxDBChangeSequence


getTableColumns()​

getTableColumns<T>(EntityType): Promise<PgliteTableColumn[]>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:575

获取表的列信息

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterTypeDescription
EntityTypeT实体类型

Returns​

Promise<PgliteTableColumn[]>

列信息数组


internalQuery()​

internalQuery<T>(sql, params?): Promise<Results<T>>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:685

内部查询方法 (Public Alias) 供核心同步逻辑使用,绕过队列直接查询。

Type Parameters​

Type ParameterDefault type
TRecord<string, unknown>

Parameters​

ParameterType
sqlstring
params?unknown[]

Returns​

Promise<Results<T>>


isEncryptedAtRest()​

isEncryptedAtRest(value): boolean;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:199

判定一个落库值是否已处于加密后的 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(EntityType): Promise<boolean>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:556

判断表是否存在

Parameters​

ParameterTypeDescription
EntityTypeEntityType实体类型

Returns​

Promise<boolean>

表是否存在

Implementation of​

IRxDBAdapter.isTableExisted

Overrides​

RxDBAdapterLocalBase.isTableExisted


liveQuery()​

liveQuery<T>(
sql,
params?,
callback?
): Promise<LiveQuery<T>>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:708

PGlite live query。调用方负责 unsubscribe。

Type Parameters​

Type ParameterDefault type
TRecord<string, unknown>

Parameters​

ParameterType
sqlstring
params?unknown[]
callback?(results) => void

Returns​

Promise<LiveQuery<T>>


mergeChanges()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:271

合并远程变更。disableTriggers 用于 pull,避免再写 RxDBChange。

Parameters​

ParameterTypeDefault value
actionsSwitchVersionActionsundefined
localChanges?Omit<RxDBChange, "id">[]undefined
disableTriggers?booleanfalse

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.mergeChanges


migrateSystemSchema()​

migrateSystemSchema(): Promise<void>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:540

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

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.migrateSystemSchema


mutations()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:266

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

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
mutationsRxDBMutationsMap<T>

Returns​

Promise<InstanceType<T>[]>

Implementation of​

IRxDBAdapter.mutations


physicalTableNames()​

physicalTableNames(metadata): readonly string[];

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

一张实体表在本适配器发出的 SQL 里可能被写成的全部名字。

Parameters​

ParameterTypeDescription
metadataEntityMetadata实体元数据;答案只由它决定,不读任何实例状态

Returns​

readonly string[]

未归一化、不带 schema 限定的物理表名;至少一个

Remarks​

命名规则归写表的那一方所有。 在这条能力之前, @aiao/rxdb-plugin-working-tree 的版本化域自己按 '$' 把 sqlite 家族的折叠规则重拼了 一遍。抄来的规则不会因为原件改了而报错,它只是开始算错——而算错的后果是单向的: raw 写门禁认不出某张受版本控制的表,于是静默放行一条绕过捕获的写。

默认实现交出逻辑名、一个字都不猜。替后端猜一个「常见」形态(比如把 sqlite 家族的 namespace$table 写成默认)只是把抄规则这件事从插件挪到核心,而且从此没有任何一个 后端会因为忘了覆写而被发现——它会一直拿着别人的规则算自己的表名。

有默认实现而不是 abstract,与 RxDBAdapterLocalBase.migrateSystemSchema 同一口径:这是一次对既有基类的扩展,abstract 会让仓外每一个自建适配器在升级时直接 编译不过,而它们里面不折叠命名空间的那一批本来就是对的。代价是「忘了覆写」与 「确实不需要」在类型上同形;折叠命名空间的后端(sqlite 家族)必须自己覆写。

不带 schema 限定:"public"."post" 这种形态在 raw 判定的限定剥离一步里已经被还原成 逻辑名了,这里再登记一遍只是同一个名字的第二种写法。要登记的是剥不掉的那一种。

Inherited from​

RxDBAdapterLocalBase.physicalTableNames


query()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:667

查询入口。引导窗外走 writeQuery;引导窗就绪后再入队。

Type Parameters​

Type ParameterDefault type
TRecord<string, unknown>

Parameters​

ParameterType
sqlstring
bindings?unknown[]

Returns​

Promise<Results<T>>


rawQuery()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:701

原始 SQL。

Parameters​

ParameterType
sqlstring
params?unknown[]

Returns​

Promise<RawQueryResult>

Remarks​

judgment 由核心包出,这里只负责接上(adapter-contract.md §2)。rawQuery?() 在 IRxDBAdapter 上是可选方法,核心包没法像四个捕获挂载点那样替适配器包住它,于是这一句 gateRawWrite 是本类唯一要写对的地方。判定本身一个字都不在这里重写——Postgres 与 SQLite 的方言差异只落在核心包的词法归一化层;在这里补一份「PG 版判定」就是 §2 禁止的第二份实现。

拒绝发生在语句下发之前,连事务都不会开,业务表零变化——不是写完再回滚;raw 通道上根本没有 事务可回滚,而那正是它存在的原因。未启用提交能力的库上判定第 1 步放行,行为与接入前逐字一致。

Implementation of​

IRxDBAdapter.rawQuery


ready()​

protected ready(): Promise<void>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:740

就绪门。必须在获取队列槽位之前调用。 等的是整个 RxDB.connect(),引导链路走 bootstrapTransaction。

Returns​

Promise<void>


reconcileEntityIndexes()​

reconcileEntityIndexes(EntityTypes): Promise<void>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:527

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

Parameters​

ParameterType
EntityTypesEntityType[]

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.reconcileEntityIndexes


removeMany()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:312

批量删除实体

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterTypeDescription
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<RxDBAdapterPGlite, RT>

Returns​

void

Inherited from​

RxDBAdapterLocalBase.repository


restoreEntity()​

restoreEntity<T>(entity, options): Promise<InstanceType<T>>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:434

尚未实现。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
entityInstanceType<T>
optionsRestoreEntityOptions

Returns​

Promise<InstanceType<T>>


runInTransaction()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:616

真实适配器一律新开事务。「已在事务中就复用」由 executor 门面接管。

Type Parameters​

Type Parameter
T extends TransactionFun

Parameters​

ParameterTypeDefault value
transactionFunTundefined
transactionLogbooleantrue

Returns​

Promise<Awaited<ReturnType<T>>>

Overrides​

RxDBAdapterLocalBase.runInTransaction


saveMany()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:334

按类型分组 UPSERT,再更新实体状态。

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-pglite/src/RxDBAdapterPGlite.ts:301

设置 RxDBChange 序列。sequence 是最后已用 id;< 1 用 setval(1, false)。

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


switchBranch()​

switchBranch(options): Promise<void>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:422

切换分支期间抑制 rxdb_branch NOTIFY。

Parameters​

ParameterType
optionsSwitchBranchOptions

Returns​

Promise<void>

Overrides​

RxDBAdapterLocalBase.switchBranch


transaction()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:591

事务入口。与 query() 共用 #queue;就绪等待必须在入队之前。 体内读写必须经回调收到的 executor。

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-pglite/src/RxDBAdapterPGlite.ts:235

QueryCache upsert。未知键与缺必填列一律 fail-fast。

Type Parameters​

Type Parameter
T

Parameters​

ParameterType
entityNamestring
dataT[]

Returns​

Observable<void>

Remarks​

解析与建语句都在 this.transaction(...) 之外完成(US-024):这两步只读 metadata, 放进事务里只会为一个注定要回滚的批次开一次事务,而列契约的诊断本就该在 「有没有开始写」之前给出 —— 读者看到错误时数据库连 BEGIN 都没发过, 「一行都没有落地」这句话才是能自证的。

Overrides​

RxDBAdapterLocalBase.upsertMany


version()​

version(): Promise<string>;

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:448

获取 PostgreSQL 版本

Returns​

Promise<string>

PostgreSQL 版本字符串

Implementation of​

IRxDBAdapter.version


writeQuery()​

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

Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:677

Type Parameters​

Type ParameterDefault type
TRecord<string, unknown>

Parameters​

ParameterType
sqlstring
bindings?unknown[]

Returns​

Promise<Results<T>>