RxDBAdapterPGlite
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:57
RxDB PGlite 适配器
基于 PGlite(WebAssembly PostgreSQL)的本地存储适配器 提供完整的关系型数据库功能,包括:
- 实体持久化和查询
- 事务管理
- 分支管理(用于多版本数据管理)
- 变更历史追踪
Extends
Implements
Constructors
Constructor
new RxDBAdapterPGlite(rxdb, options): RxDBAdapterPGlite;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:88
构造函数
Parameters
| Parameter | Type | Description |
|---|---|---|
rxdb | RxDB | RxDB 实例 |
options | PGliteClientOptions | PGlite 客户端配置选项 |
Returns
RxDBAdapterPGlite
Overrides
RxDBAdapterLocalBase.constructor
Properties
name
name: string = ADAPTER_NAME;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:80
适配器名称
Implementation of
repository_cache
protected readonly repository_cache: Map<EntityType, IRepository<any>>;
Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:80
Inherited from
RxDBAdapterLocalBase.repository_cache
repository_map
protected readonly repository_map: Map<string, RepositoryConstructor<any>>;
Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:79
Inherited from
RxDBAdapterLocalBase.repository_map
rxdb
readonly rxdb: RxDB;
Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:78
Inherited from
Methods
connect()
connect(): Promise<IRxDBAdapter>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:309
连接到数据库
Returns
Promise<IRxDBAdapter>
适配器实例
Implementation of
createBranch()
createBranch(branchId, fromChangeId?): Promise<RxDBBranch>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:350
创建分支
分支用于管理数据的不同版本,类似 Git 分支:
- 验证分支 ID 不存在
- 确定源分支(从当前活跃分支或指定变更点)
- 创建新分支记录
Parameters
| Parameter | Type | Description |
|---|---|---|
branchId | string | 新分支 ID |
fromChangeId? | number | 从指定变更 ID 创建分支(可选,默认从当前分支的最新状态) |
Returns
Promise<RxDBBranch>
Throws
分支 ID 已存在或源分支未找到
createTables()
createTables<T>(EntityTypes, entities?): Promise<boolean>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:443
创建数据库表
分三阶段创建表结构:
- 创建表和列(不含外键约束)
- 添加外键约束
- 创建触发器(用于变更追踪)
这样可以避免因表创建顺序导致的外键约束失败
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type | Description |
|---|---|---|
EntityTypes | T[] | 实体类型数组 |
entities? | InstanceType<T>[] | 初始化数据(可选) |
Returns
Promise<boolean>
是否成功创建
Overrides
RxDBAdapterLocalBase.createTables
deleteByIds()
deleteByIds(entityName, ids): Observable<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:172
批量删除实体(QueryCache 专用)
Parameters
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体表名(不含 schema) |
ids | string[] | 要删除的 ID 列表 |
Returns
Observable<void>
Observable<void>
Overrides
RxDBAdapterLocalBase.deleteByIds
disconnect()
disconnect(): Promise<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:330
断开数据库连接
清理资源并发送销毁信号
Returns
Promise<void>
Implementation of
getMetadataByIds()
getMetadataByIds(entityName, ids): Observable<Map<string, string>>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:107
批量获取实体元数据(QueryCache 专用)
返回 id → updatedAt 的映射,用于 diffMetadata 对比。
Parameters
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体表名(不含 schema) |
ids | string[] | 要查询的 ID 列表 |
Returns
Observable<Map<string, string>>
Observable<Map<string, string>> - id → updatedAt 映射
Overrides
RxDBAdapterLocalBase.getMetadataByIds
getRepository()
getRepository<T, RT>(entity): RT;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:408
获取实体类型的仓库实例
根据实体元数据中的仓库类型创建相应的仓库实例:
- Repository: 通用仓库
- TreeRepository: 树形仓库(用于层级数据)
仓库实例会被缓存,避免重复创建
Type Parameters
| Type Parameter | Default type |
|---|---|
T extends EntityType | - |
RT | IRepository<T> |
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | T | 实体类型 |
Returns
RT
仓库实例
Throws
不支持的仓库类型
Implementation of
Overrides
RxDBAdapterLocalBase.getRepository
getRxDBChangeSequence()
getRxDBChangeSequence(): Promise<number>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:217
获取 RxDBChange 表当前序列值
用于同步时获取本地变更序列的当前值,以便确定需要推送到远程的变更范围。
Returns
Promise<number>
当前序列值
Overrides
RxDBAdapterLocalBase.getRxDBChangeSequence
getTableColumns()
getTableColumns<T>(EntityType): Promise<PgliteTableColumn[]>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:561
获取表的列信息
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type | Description |
|---|---|---|
EntityType | T | 实体类型 |
Returns
Promise<PgliteTableColumn[]>
列信息数组
internalQuery()
internalQuery(sql, params?): Promise<Results<any>>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:679
内部查询方法 (Public Alias) 供核心同步逻辑使用,绕过队列直接查询
Parameters
| Parameter | Type |
|---|---|
sql | string |
params? | any[] |
Returns
Promise<Results<any>>
isTableExisted()
isTableExisted(EntityType): Promise<boolean>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:543
判断表是否存在
Parameters
| Parameter | Type | Description |
|---|---|---|
EntityType | EntityType | 实体类型 |
Returns
Promise<boolean>
表是否存在
Implementation of
localRxDBBranch()
localRxDBBranch(): PGliteRepository<typeof RxDBBranch>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:577
获取本地分支仓库
Returns
PGliteRepository<typeof RxDBBranch>
分支仓库实例
localRxDBChange()
localRxDBChange(): PGliteRepository<typeof RxDBChange>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:586
获取本地变更仓库
Returns
PGliteRepository<typeof RxDBChange>
变更仓库实例
mergeChanges()
mergeChanges(
actions,
localChanges?,
disableTriggers?): Promise<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:201
合并远程变更到本地实体表
用于同步时应用远程变更到本地数据库,支持禁用触发器以避免产生本地变更记录
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
actions | SwitchVersionActions | undefined | 需要执行的变更操作(插入、更新、删除) |
localChanges? | Omit<RxDBChange, "id">[] | undefined | (已废弃)不再使用,Pull 来的数据不应该生成 RxDBChange 记录 |
disableTriggers? | boolean | false | 是否禁用触发器(用于 pull 等操作,避免创建 RxDBChange) |
Returns
Promise<void>
Deprecated
localChanges 参数已废弃,将在未来版本中移除
Overrides
RxDBAdapterLocalBase.mergeChanges
mutations()
mutations<T>(mutations): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:183
批量修改实体(创建/更新/删除)
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type | Description |
|---|---|---|
mutations | RxDBMutationsMap<T> | 批量修改选项 |
Returns
Promise<InstanceType<T>[]>
Implementation of
query()
query(sql, bindings?): Promise<Results<any>>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:659
执行 SQL 查询
查询执行策略:
- 在事务中:直接在事务上下文中执行
- 非事务中:加入队列按顺序执行,避免并发冲突
Parameters
| Parameter | Type | Description |
|---|---|---|
sql | string | SQL 语句 |
bindings? | any[] | 参数绑定 |
Returns
Promise<Results<any>>
查询结果
removeMany()
removeMany<T>(entities): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:250
批量删除实体
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:88
注册适配器的仓库
Type Parameters
| Type Parameter |
|---|
RT extends RepositoryBase<any> |
Parameters
| Parameter | Type |
|---|---|
repositoryName | string |
RepositoryClass | RepositoryConstructor<RT> |
Returns
void
Inherited from
RxDBAdapterLocalBase.repository
restoreEntity()
restoreEntity<T>(_entity, _options): Promise<InstanceType<T>>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:376
恢复实体到指定状态
从变更历史中恢复实体到指定的版本
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type | Description |
|---|---|---|
_entity | InstanceType<T> | 要恢复的实体 |
_options | RestoreEntityOptions | 恢复选项 |
Returns
Promise<InstanceType<T>>
恢复后的实体
Throws
此功能尚未实现
saveMany()
saveMany<T>(entities): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:273
批量保存实体
将实体持久化到数据库:
- 按实体类型分组(避免混合不同表的数据)
- 为每个类型生成批量插入 SQL(使用 UPSERT)
- 在事务中执行(如果尚未在事务中)
- 更新实体状态标记
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type | Description |
|---|---|---|
entities | InstanceType<T>[] | 要保存的实体数组 |
Returns
Promise<InstanceType<T>[]>
已保存的实体数组
Implementation of
setRxDBChangeSequence()
setRxDBChangeSequence(sequence): Promise<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:238
设置 RxDBChange 表序列值
用于同步时调整本地变更序列值,通常在 pull 操作后更新序列以避免与远程冲突。
Parameters
| Parameter | Type | Description |
|---|---|---|
sequence | number | 要设置的序列值 |
Returns
Promise<void>
switchBranch()
switchBranch(options): Promise<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:362
切换到指定分支
切换数据库分支,包括更新触发器、执行数据迁移操作和更新分支状态
Parameters
| Parameter | Type | Description |
|---|---|---|
options | SwitchBranchOptions | 分支切换选项,包含目标分支 ID 和可选的数据迁移操作 |
Returns
Promise<void>
Throws
分支切换失败
Overrides
RxDBAdapterLocalBase.switchBranch
transaction()
transaction<T>(transactionFun, transactionLog?): Promise<Awaited<ReturnType<T>>>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:605
执行事务
事务管理策略:
- 使用手动 BEGIN/COMMIT/ROLLBACK 控制事务边界
- 使用 SET CONSTRAINTS ALL DEFERRED 延迟外键约束检查到提交时
- 动态重建触发器以注入 transactionId(与 SQLite 方案一致)
- PostgreSQL 不允许在有 pending trigger events 时修改表结构, 因此无法使用列默认值方案,必须重建触发器
Type Parameters
| Type Parameter |
|---|
T extends TransactionFun |
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
transactionFun | T | undefined | 事务函数 |
transactionLog | boolean | true | 是否启用事务日志(默认 true) |
Returns
Promise<Awaited<ReturnType<T>>>
事务函数的返回值
Throws
事务执行失败
Overrides
RxDBAdapterLocalBase.transaction
upsertMany()
upsertMany<T>(entityName, data): Observable<void>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:135
批量更新或插入实体(QueryCache 专用)
使用 INSERT ... ON CONFLICT DO UPDATE 实现 upsert 语义。
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体表名(不含 schema) |
data | T[] | 要写入的数据数组 |
Returns
Observable<void>
Observable<void>
Overrides
RxDBAdapterLocalBase.upsertMany
version()
version(): Promise<string>;
Defined in: packages/rxdb-adapter-pglite/src/RxDBAdapterPGlite.ts:390
获取 PostgreSQL 版本
Returns
Promise<string>
PostgreSQL 版本字符串