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
| Parameter | Type |
|---|---|
rxdb | RxDB |
options | PGliteClientOptions |
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
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
Accessors
encryption
Get Signature
get encryption(): AdapterEncryptionFacade;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:159
Returns
encryptionContext
Get Signature
get encryptionContext(): EncryptionContext;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:151
Returns
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
Inherited from
RxDBAdapterLocalBase.workingTreeRawWriteContext
Methods
backup()
backup(sink, options?): Promise<RxDBBackupResult>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:650
把整个数据库写成一份可恢复的归档。
Parameters
| Parameter | Type | Description |
|---|---|---|
sink | WritableStream<Uint8Array<ArrayBufferLike>> | 输出流;成功时被 close,失败时被 abort |
options | RxDBBackupOptions | 取消信号与排队时限 |
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
| Parameter | Type | Default value |
|---|---|---|
transactionFun | T | undefined |
transactionLog | boolean | true |
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
createClient()
protected createClient(): IPGliteClient;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:732
创建底层客户端。子类覆写它即可换掉整条数据通路。
Returns
尚未 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
| Parameter | Type | Description |
|---|---|---|
EntityTypes | T[] | 实体类型数组 |
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
| Parameter | Type |
|---|---|
entity | T |
host | RxDBAdapterPGlite |
Returns
IRepository<T>
deleteByIds()
deleteByIds(entityName, ids): Observable<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:254
QueryCache 按 id 批量删除。
Parameters
| Parameter | Type |
|---|---|
entityName | string |
ids | string[] |
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
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
| Parameter | Type |
|---|---|
entityName | string |
ids | string[] |
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 Parameter | Default type |
|---|---|
T extends EntityType | - |
RT | IRepository<T> |
Parameters
| Parameter | Type |
|---|---|
entity | T |
Returns
RT
Remarks
返回的是适配器轴的仓储(见 AdapterRepositoryConstructor),
与用户通常拿到的门面仓储 RxDB.getRepository() 不是同一个对象。
Implementation of
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
| Parameter | Type | Description |
|---|---|---|
EntityType | T | 实体类型 |
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 Parameter | Default type |
|---|---|
T | Record<string, unknown> |
Parameters
| Parameter | Type |
|---|---|
sql | string |
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
| Parameter | Type | Description |
|---|---|---|
value | unknown | 落库列里的值 |
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
| Parameter | Type | Description |
|---|---|---|
EntityType | EntityType | 实体类型 |
Returns
Promise<boolean>
表是否存在
Implementation of
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 Parameter | Default type |
|---|---|
T | Record<string, unknown> |
Parameters
| Parameter | Type |
|---|---|
sql | string |
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
| Parameter | Type | Default value |
|---|---|---|
actions | SwitchVersionActions | undefined |
localChanges? | Omit<RxDBChange, "id">[] | undefined |
disableTriggers? | boolean | false |
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
| Parameter | Type |
|---|---|
mutations | RxDBMutationsMap<T> |
Returns
Promise<InstanceType<T>[]>
Implementation of
physicalTableNames()
physicalTableNames(metadata): readonly string[];
Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:416
一张实体表在本适配器发出的 SQL 里可能被写成的全部名字。
Parameters
| Parameter | Type | Description |
|---|---|---|
metadata | EntityMetadata | 实体元数据;答案只由它决定,不读任何实例状态 |
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 Parameter | Default type |
|---|---|
T | Record<string, unknown> |
Parameters
| Parameter | Type |
|---|---|
sql | string |
bindings? | unknown[] |
Returns
Promise<Results<T>>
rawQuery()
rawQuery(sql, params?): Promise<RawQueryResult>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:701
原始 SQL。
Parameters
| Parameter | Type |
|---|---|
sql | string |
params? | unknown[] |
Returns
Promise<RawQueryResult>
Remarks
judgment 由核心包出,这里只负责接上(adapter-contract.md §2)。rawQuery?() 在
IRxDBAdapter 上是可选方法,核心包没法像四个捕获挂载点那样替适配器包住它,于是这一句
gateRawWrite 是本类唯一要写对的地方。判定本身一个字都不在这里重写——Postgres 与 SQLite
的方言差异只落在核心包的词法归一化层;在这里补一份「PG 版判定」就是 §2 禁止的第二份实现。
拒绝发生在语句下发之前,连事务都不会开,业务表零变化——不是写完再回滚;raw 通道上根本没有 事务可回滚,而那正是它存在的原因。未启用提交能力的库上判定第 1 步放行,行为与接入前逐字一致。
Implementation of
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
| Parameter | Type |
|---|---|
EntityTypes | EntityType[] |
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
| Parameter | Type | Description |
|---|---|---|
entities | InstanceType<T>[] | 要删除的实体数组 |
Returns
Promise<InstanceType<T>[]>
已删除的实体数组
Implementation of
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
| Parameter | Type |
|---|---|
repositoryName | string |
RepositoryClass | AdapterRepositoryConstructor<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
| Parameter | Type |
|---|---|
entity | InstanceType<T> |
options | RestoreEntityOptions |
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
| Parameter | Type | Default value |
|---|---|---|
transactionFun | T | undefined |
transactionLog | boolean | true |
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
| Parameter | Type |
|---|---|
entities | InstanceType<T>[] |
Returns
Promise<InstanceType<T>[]>
Implementation of
setRxDBChangeSequence()
setRxDBChangeSequence(sequence): Promise<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:301
设置 RxDBChange 序列。sequence 是最后已用 id;< 1 用 setval(1, false)。
Parameters
| Parameter | Type |
|---|---|
sequence | number |
Returns
Promise<void>
setWorkingTreeCaptureHook()
setWorkingTreeCaptureHook(hook): void;
Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:371
Internal
装上或卸下捕获运行时(adapter-contract.md §1 的四个挂载点)。
Parameters
| Parameter | Type | Description |
|---|---|---|
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
| Parameter | Type |
|---|---|
options | SwitchBranchOptions |
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
| Parameter | Type | Default value |
|---|---|---|
transactionFun | T | undefined |
transactionLog | boolean | true |
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
| Parameter | Type |
|---|---|
entityName | string |
data | T[] |
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
writeQuery()
writeQuery<T>(sql, bindings?): Promise<Results<T>>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:677
Type Parameters
| Type Parameter | Default type |
|---|---|
T | Record<string, unknown> |
Parameters
| Parameter | Type |
|---|---|
sql | string |
bindings? | unknown[] |
Returns
Promise<Results<T>>