跳到主要内容

RxDBAdapterSupabase

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:86

Supabase 适配器

Example​

const rxdb = new RxDB({
adapters: {
supabase: rxdb => new RxDBAdapterSupabase(rxdb, {
supabaseUrl: 'https://xxx.supabase.co',
supabaseKey: 'your-anon-key'
})
}
});

Extends​

Implements​

Constructors​

Constructor​

new RxDBAdapterSupabase(rxdb, options): RxDBAdapterSupabase;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:101

Parameters​

ParameterType
rxdbRxDB
optionsSupabaseAdapterOptions

Returns​

RxDBAdapterSupabase

Overrides​

RxDBAdapterRemoteBase.constructor

Properties​

name​

readonly name: "supabase" = ADAPTER_NAME;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:95

适配器名,与 RxDB.adapter() 登记时用的键同值;错误消息与 getAdapter() 都按它认人

Implementation of​

IRxDBAdapter.name


options​

readonly options: SupabaseAdapterOptions;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:103


repository_cache​

protected readonly repository_cache: Map<EntityType, RepositoryInstance<EntityType>>;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:300

Inherited from​

RxDBAdapterRemoteBase.repository_cache


repository_map​

protected readonly repository_map: Map<string, AdapterRepositoryConstructor<RxDBAdapterSupabase, RepositoryInstance<EntityType>>>;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:299

Inherited from​

RxDBAdapterRemoteBase.repository_map


rxdb​

readonly rxdb: RxDB;

Defined in: packages/rxdb/dist/rxdb-adapter.d.ts:298

Inherited from​

RxDBAdapterRemoteBase.rxdb

Accessors​

client​

Get Signature​

get client(): SupabaseClient;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:97

Returns​

SupabaseClient

Methods​

branchExists()​

branchExists(branchId): Promise<boolean>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:532

Parameters​

ParameterType
branchIdstring

Returns​

Promise<boolean>

Overrides​

RxDBAdapterRemoteBase.branchExists


connect()​

connect(): Promise<IRxDBAdapter>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:125

建立连接并把系统表补到当前水位。

Returns​

Promise<IRxDBAdapter>

自身,便于链式使用

Remarks​

建表与系统迁移都在这里发生(见 isCurrentRxDBSystemVersion),因此它可能很慢, 也可能因为库比本进程新而抛 UnsupportedRxDBSystemVersionError。

Implementation of​

IRxDBAdapter.connect


disconnect()​

disconnect(): Promise<void>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:138

断开连接并释放底层句柄。

Returns​

Promise<void>

Remarks​

与 RxDB.destroy() 不同,断开是可逆的:同一个适配器实例之后还能再 connect()。 实现须幂等——未连接时调用是空操作而不是抛错。

Implementation of​

IRxDBAdapter.disconnect


fetchMetadata()​

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

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:585

获取实体元数据,用于新鲜度比较(QueryCache 专用)

只返回 { id, updatedAt } 元数据,网络传输量比完整数据减少 90%+。

Parameters​

ParameterTypeDescription
entityNamestring实体名称
queryFilterRuleGroup<unknown>-

Returns​

Observable<QueryCacheEntityMetadata[]>

Observable<QueryCacheEntityMetadata[]>

Example​

adapter.fetchMetadata('Product', { combinator: 'and', rules: [{ field: 'status', operator: 'eq', value: 'active' }] })
.subscribe(metadata => console.log(metadata));

Overrides​

RxDBAdapterRemoteBase.fetchMetadata


findByIds()​

findByIds<T>(entityName, ids): Observable<T[]>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:618

按 ID 列表批量获取完整数据(QueryCache 专用)

Type Parameters​

Type Parameter
T

Parameters​

ParameterTypeDescription
entityNamestring实体名称
idsstring[]需要获取的实体 ID 列表

Returns​

Observable<T[]>

Observable<T[]>

Overrides​

RxDBAdapterRemoteBase.findByIds


getChangeCount()​

getChangeCount(
sinceId,
repositoryFilter?,
branchId?
): Promise<{
count: number;
latestChangeId: number;
}>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:378

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

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

Parameters​

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

Returns​

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

变更数量和最新 changeId

Example​

// 查询 Todo 实体的新变更数量
const { count, latestChangeId } = await adapter.getChangeCount(100, ['Todo']);
console.log(`有 ${count} 条新变更,最新 ID: ${latestChangeId}`);

Overrides​

RxDBAdapterRemoteBase.getChangeCount


getRepository()​

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

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:232

取该实体在本适配器上的仓储实例。

Type Parameters​

Type ParameterDefault type
T extends EntityType-
RT extends IRepository<T>IRepository<T>

Parameters​

ParameterType
EntityTypeT

Returns​

RT

Remarks​

返回的是适配器轴的仓储(见 AdapterRepositoryConstructor), 与用户通常拿到的门面仓储 RxDB.getRepository() 不是同一个对象。

Implementation of​

IRxDBAdapter.getRepository

Overrides​

RxDBAdapterRemoteBase.getRepository


isTableExisted()​

isTableExisted(EntityType): Promise<boolean>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:253

该实体对应的表在库里是否已存在。

Parameters​

ParameterType
EntityTypeEntityType

Returns​

Promise<boolean>

Remarks​

问的是物理表,不是元数据里有没有登记这个实体。

Implementation of​

IRxDBAdapter.isTableExisted


mergeChanges()​

mergeChanges(
actions,
branchId?,
changes?
): Promise<
| RemoteMergeResult
| undefined>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:420

应用压缩后的变更到远程(事务)

通过 rxdb_mutations RPC 在单个事务中:

  1. 写入 RxDBChange 表(用于其他客户端 pull)
  2. 应用 actions 到实体表(INSERT/UPDATE/DELETE)
  3. 自动跳过同步触发器(p_skip_sync=true)

Parameters​

ParameterTypeDescription
actionsSwitchVersionActions压缩后的变更操作集合
branchId?string分支 ID
changes?IRxDBChange[]完整的原始变更记录(可选,用于保留完整历史)

Returns​

Promise< | RemoteMergeResult | undefined>

Overrides​

RxDBAdapterRemoteBase.mergeChanges


mutations()​

mutations<T>(options): Promise<InstanceType<T>[]>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:190

批量修改实体(事务)

通过 PostgreSQL RPC 调用 rxdb_mutations 存储过程, 在单个数据库事务中执行所有操作,确保原子性。

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
optionsRxDBMutationsMap<T>

Returns​

Promise<InstanceType<T>[]>

Implementation of​

IRxDBAdapter.mutations


pullBranches()​

pullBranches(): Promise<RemoteBranchInfo[]>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:543

Returns​

Promise<RemoteBranchInfo[]>

Overrides​

RxDBAdapterRemoteBase.pullBranches


pullChanges()​

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

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:293

从远程拉取变更记录

Parameters​

ParameterTypeDefault valueDescription
sinceIdnumberundefined拉取此 ID 之后的变更(不包含该 ID)
limitnumber1000最大拉取数量
repositoryFilter?string[]undefined可选的实体过滤列表(用于 repository-level sync)
filter?RuleGroup<unknown>undefined可选的行级过滤条件(用于 SyncType.Filter)
branchId?stringundefined-

Returns​

Promise<RemoteChange[]>

RxDBChange 记录数组,按 id ASC 排序

Remarks​

使用 id 而非 createdAt 作为游标,避免同毫秒内多条记录导致的重复问题

当提供 filter 参数时,调用 rxdb_pull_changes RPC 在变更日志的快照上求值,不 JOIN 当前业务表: beforeData 或 afterData 任一命中即返回整条变更,snapshotComplete = false 的历史变更不经过滤直接返回。 因此 filter 只用于少拉数据,不是行级隔离边界。

Overrides​

RxDBAdapterRemoteBase.pullChanges


pullChangesBatch()​

pullChangesBatch(
requests,
limit?,
branchIds?
): Promise<RemoteChange[]>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:465

批量拉取多个实体的变更记录(单次 HTTP 请求)

通过 PostgREST 的 OR 过滤器实现: or=(and(entity.eq.Todo,id.gt.6),and(entity.eq.RxDBBranch,id.gt.0),...)

每个实体使用独立的 sinceId 水位线,避免下载多余数据。

Parameters​

ParameterTypeDefault value
requestsPullBatchRequest[]undefined
limitnumber1000
branchIds?string[]undefined

Returns​

Promise<RemoteChange[]>

Overrides​

RxDBAdapterRemoteBase.pullChangesBatch


pushBranches()​

pushBranches(branches): Promise<{
skipped: string[];
synced: number;
}>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:518

Parameters​

ParameterType
branchesRecord<string, unknown>[]

Returns​

Promise<{ skipped: string[]; synced: number; }>

Overrides​

RxDBAdapterRemoteBase.pushBranches


removeMany()​

removeMany<T>(entities): Promise<InstanceType<T>[]>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:179

批量删除实体(非事务)

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
entitiesInstanceType<T>[]

Returns​

Promise<InstanceType<T>[]>

Implementation of​

IRxDBAdapter.removeMany


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​

ParameterType
repositoryNamestring
RepositoryClassAdapterRepositoryConstructor<RxDBAdapterSupabase, RT>

Returns​

void

Inherited from​

RxDBAdapterRemoteBase.repository


saveMany()​

saveMany<T>(entities): Promise<InstanceType<T>[]>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:171

批量保存实体(upsert 语义,非事务)

Type Parameters​

Type Parameter
T extends EntityType

Parameters​

ParameterType
entitiesInstanceType<T>[]

Returns​

Promise<InstanceType<T>[]>

Implementation of​

IRxDBAdapter.saveMany


version()​

version(): Promise<string>;

Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:151

底层数据库引擎的版本号(如 SQLite 的 3.45.0),用于诊断与能力判断。

Returns​

Promise<string>

Remarks​

与系统表水位号(RXDB_SYSTEM_SCHEMA_VERSION)无关,那是 RxDB 自己的号。

Implementation of​

IRxDBAdapter.version