RxDBAdapterRemoteBase
Defined in: packages/rxdb/src/rxdb-adapter.ts:259
数据库适配器基类(远程)
Extends
Extended by
Constructors
Constructor
new RxDBAdapterRemoteBase(rxdb): RxDBAdapterRemoteBase;
Defined in: packages/rxdb/src/rxdb-adapter.ts:129
Parameters
| Parameter | Type |
|---|---|
rxdb | RxDB |
Returns
RxDBAdapterRemoteBase
Inherited from
Properties
repository_cache
protected readonly repository_cache: Map<EntityType, IRepository<any>>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:127
Inherited from
RxDBAdapterBase.repository_cache
repository_map
protected readonly repository_map: Map<string, RepositoryConstructor<any>>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:126
Inherited from
RxDBAdapterBase.repository_map
rxdb
readonly rxdb: RxDB;
Defined in: packages/rxdb/src/rxdb-adapter.ts:129
Inherited from
Methods
branchExists()?
optional branchExists(branchId): Promise<boolean>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:392
检查远程是否存在指定分支
Parameters
| Parameter | Type | Description |
|---|---|---|
branchId | string | 分支 ID |
Returns
Promise<boolean>
是否存在
fetchMetadata()
abstract fetchMetadata(entityName, query): Observable<QueryCacheEntityMetadata[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:357
获取实体元数据,用于新鲜度比较(QueryCache 专用)
只返回 { id, updatedAt } 元数据,网络传输量比完整数据减少 90%+。
这是 QueryCache 同步策略的核心能力。
Parameters
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体名称 |
query | RuleGroup<unknown> | 查询条件 |
Returns
Observable<QueryCacheEntityMetadata[]>
Observable<QueryCacheEntityMetadata[]> - 实体 ID 和 updatedAt
Example
adapter.fetchMetadata('Product', { where: { status: 'active' } })
.subscribe(metadata => {
// metadata: [{ id: 'p1', updatedAt: '2026-01-12T10:00:00Z' }, ...]
});
findByIds()
abstract findByIds<T>(entityName, ids): Observable<T[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:376
按 ID 列表批量获取完整数据(QueryCache 专用)
用于拉取过时或缺失的数据,避免 N+1 问题。
Type Parameters
| Type Parameter |
|---|
T |
Parameters
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体名称 |
ids | string[] | 需要获取的实体 ID 列表 |
Returns
Observable<T[]>
Observable<T[]> - 完整实体数据
Example
adapter.findByIds('Product', ['p1', 'p2', 'p3'])
.subscribe(products => {
// products: [{ id: 'p1', name: 'Product A', ... }, ...]
});
getChangeCount()
abstract getChangeCount(
sinceId,
repositoryFilter?,
branchId?): Promise<{
count: number;
latestChangeId: number;
}>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:293
获取远程变更数量(轻量级,不下载数据)
此方法只查询远程有多少新变更,不返回实际数据。 用于实现 checkRepositoryUpdates() 功能,节省带宽。
Parameters
| Parameter | Type | Description |
|---|---|---|
sinceId | number | 起始 changeId(不包含该 ID) |
repositoryFilter? | string[] | 可选的实体过滤列表 |
branchId? | string | 可选的分支 ID(只计数该分支的变更) |
Returns
Promise<{
count: number;
latestChangeId: number;
}>
变更数量和最新 changeId
getRepository()
abstract getRepository<T, RT>(EntityType): RT;
Defined in: packages/rxdb/src/rxdb-adapter.ts:131
Type Parameters
| Type Parameter | Default type |
|---|---|
T extends EntityType | - |
RT extends IRepository<T> | IRepository<T> |
Parameters
| Parameter | Type |
|---|---|
EntityType | T |
Returns
RT
Inherited from
mergeChanges()
abstract mergeChanges(
actions,
branchId?,
changes?): Promise<
| number
| void
| RemoteMergeResult>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:316
应用压缩后的变更到远程实体表
实现策略(Supabase):
- 将 actions (Map) 转换为 RemoteChange 记录
- 在事务中: a) 写入远程 RemoteChange 表(用于其他客户端 pull) b) 直接操作远程实体表(INSERT/UPDATE/DELETE)
Parameters
| Parameter | Type | Description |
|---|---|---|
actions | SwitchVersionActions | 压缩后的变更操作集合(从本地 push 来的) |
branchId? | string | 分支 ID(用于在远程变更记录中设置 branchId) |
changes? | IRxDBChange[] | 完整的原始变更记录(可选,用于保留完整的变更历史) |
Returns
Promise<
| number
| void
| RemoteMergeResult>
创建的远程 RxDBChange 的最大 ID(用于更新 lastPullRemoteChangeId)
pullBranches()?
optional pullBranches(): Promise<RemoteBranchInfo[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:399
拉取远程所有分支信息
Returns
Promise<RemoteBranchInfo[]>
远程分支数据数组
pullChanges()
abstract pullChanges(
sinceId,
limit?,
repositoryFilter?,
filter?,
branchId?): Promise<RemoteChange[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:274
从远程拉取变更记录
Parameters
| Parameter | Type | Description |
|---|---|---|
sinceId | number | 拉取此 ID 之后的变更(不包含该 ID) |
limit? | number | 最大拉取数量 |
repositoryFilter? | string[] | 可选的实体过滤列表(用于 repository-level sync) |
filter? | RuleGroup<any> | 可选的行级过滤条件(用于 SyncType.Filter) |
branchId? | string | 可选的分支 ID(只拉取该分支的变更) |
Returns
Promise<RemoteChange[]>
变更记录数组,按 id ASC 排序
Remarks
当提供 filter 参数时,会通过 JOIN 实体表并应用过滤条件, 只返回满足条件的实体对应的变更记录。
pullChangesBatch()?
optional pullChangesBatch(
requests,
limit,
branchIds?): Promise<RemoteChange[]>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:333
批量拉取多个实体的变更记录(单次 HTTP 请求)
每个实体可以有不同的 sinceId(水位线),通过服务端 OR 过滤 实现单次请求获取所有实体的变更。
Parameters
| Parameter | Type | Description |
|---|---|---|
requests | PullBatchRequest[] | 每个实体的拉取请求(实体名 + sinceId) |
limit | number | 最大拉取数量 |
branchIds? | string[] | 分支 ID 列表(支持包含祖先分支) |
Returns
Promise<RemoteChange[]>
变更记录数组,按 id ASC 排序
pushBranches()?
optional pushBranches(branches): Promise<{
skipped: string[];
synced: number;
}>;
Defined in: packages/rxdb/src/rxdb-adapter.ts:384
将本地分支数据推送到远程
Parameters
| Parameter | Type | Description |
|---|---|---|
branches | Record<string, unknown>[] | 要推送的分支数据数组 |
Returns
Promise<{
skipped: string[];
synced: number;
}>
同步结果 { synced: number, skipped: string[] }
repository()
protected repository<RT>(repositoryName, RepositoryClass): void;
Defined in: packages/rxdb/src/rxdb-adapter.ts:138
注册适配器的仓库
Type Parameters
| Type Parameter |
|---|
RT extends RepositoryBase<any> |
Parameters
| Parameter | Type |
|---|---|
repositoryName | string |
RepositoryClass | RepositoryConstructor<RT> |
Returns
void