跳到主要内容

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

ParameterType
rxdbRxDB

Returns

RxDBAdapterRemoteBase

Inherited from

RxDBAdapterBase.constructor

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

RxDBAdapterBase.rxdb

Methods

branchExists()?

optional branchExists(branchId): Promise<boolean>;

Defined in: packages/rxdb/src/rxdb-adapter.ts:392

检查远程是否存在指定分支

Parameters

ParameterTypeDescription
branchIdstring分支 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

ParameterTypeDescription
entityNamestring实体名称
queryRuleGroup<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

ParameterTypeDescription
entityNamestring实体名称
idsstring[]需要获取的实体 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

ParameterTypeDescription
sinceIdnumber起始 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 ParameterDefault type
T extends EntityType-
RT extends IRepository<T>IRepository<T>

Parameters

ParameterType
EntityTypeT

Returns

RT

Inherited from

RxDBAdapterBase.getRepository


mergeChanges()

abstract mergeChanges(
actions,
branchId?,
changes?): Promise<
| number
| void
| RemoteMergeResult>;

Defined in: packages/rxdb/src/rxdb-adapter.ts:316

应用压缩后的变更到远程实体表

实现策略(Supabase):

  1. 将 actions (Map) 转换为 RemoteChange 记录
  2. 在事务中: a) 写入远程 RemoteChange 表(用于其他客户端 pull) b) 直接操作远程实体表(INSERT/UPDATE/DELETE)

Parameters

ParameterTypeDescription
actionsSwitchVersionActions压缩后的变更操作集合(从本地 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

ParameterTypeDescription
sinceIdnumber拉取此 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

ParameterTypeDescription
requestsPullBatchRequest[]每个实体的拉取请求(实体名 + sinceId)
limitnumber最大拉取数量
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

ParameterTypeDescription
branchesRecord<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

ParameterType
repositoryNamestring
RepositoryClassRepositoryConstructor<RT>

Returns

void

Inherited from

RxDBAdapterBase.repository