跳到主要内容

RxDBAdapterRemoteBase

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

数据库适配器基类(远程)

Extends

Extended by

Constructors

Constructor

new RxDBAdapterRemoteBase(rxdb): RxDBAdapterRemoteBase;

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

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:94

Inherited from

RxDBAdapterBase.repository_cache


repository_map

protected readonly repository_map: Map<string, RepositoryConstructor<any>>;

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

Inherited from

RxDBAdapterBase.repository_map


rxdb

readonly rxdb: RxDB;

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

Inherited from

RxDBAdapterBase.rxdb

Methods

fetchMetadata()

abstract fetchMetadata(entityName, query): Observable<QueryCacheEntityMetadata[]>;

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

获取实体元数据,用于新鲜度比较(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:321

按 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?): Promise<{
count: number;
latestChangeId: number;
}>;

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

获取远程变更数量(轻量级,不下载数据)

此方法只查询远程有多少新变更,不返回实际数据。 用于实现 checkRepositoryUpdates() 功能,节省带宽。

Parameters

ParameterTypeDescription
sinceIdnumber起始 changeId(不包含该 ID)
repositoryFilter?string[]可选的实体过滤列表

Returns

Promise<{ count: number; latestChangeId: number; }>

变更数量和最新 changeId


getRepository()

abstract getRepository<T, RT>(EntityType): RT;

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

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): Promise<number | void>;

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

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

实现策略(Supabase):

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

Parameters

ParameterTypeDescription
actionsSwitchVersionActions压缩后的变更操作集合(从本地 push 来的)

Returns

Promise<number | void>

创建的远程 RxDBChange 的最大 ID(用于更新 lastPullRemoteChangeId)


pullChanges()

abstract pullChanges(
sinceId,
limit?,
repositoryFilter?,
filter?): Promise<RemoteChange[]>;

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

从远程拉取变更记录

Parameters

ParameterTypeDescription
sinceIdnumber拉取此 ID 之后的变更(不包含该 ID)
limit?number最大拉取数量
repositoryFilter?string[]可选的实体过滤列表(用于 repository-level sync)
filter?RuleGroup<any>可选的行级过滤条件(用于 SyncType.Filter)

Returns

Promise<RemoteChange[]>

变更记录数组,按 id ASC 排序

Remarks

当提供 filter 参数时,会通过 JOIN 实体表并应用过滤条件, 只返回满足条件的实体对应的变更记录。


repository()

protected repository<RT>(repositoryName, RepositoryClass): void;

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

注册适配器的仓库

Type Parameters

Type Parameter
RT extends RepositoryBase<any>

Parameters

ParameterType
repositoryNamestring
RepositoryClassRepositoryConstructor<RT>

Returns

void

Inherited from

RxDBAdapterBase.repository