跳到主要内容

RxDBAdapterSupabase

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

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

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

适配器名称

Implementation of

IRxDBAdapter.name


options

readonly options: SupabaseAdapterOptions;

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


repository_cache

protected readonly repository_cache: Map<EntityType, IRepository<any>>;

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

Inherited from

RxDBAdapterRemoteBase.repository_cache


repository_map

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

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

Inherited from

RxDBAdapterRemoteBase.repository_map


rxdb

readonly rxdb: RxDB;

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

Inherited from

RxDBAdapterRemoteBase.rxdb

Accessors

client

Get Signature

get client(): SupabaseClient;

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

Returns

SupabaseClient

Methods

branchExists()

branchExists(branchId): Promise<boolean>;

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

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

Parameters

ParameterTypeDescription
branchIdstring分支 ID

Returns

Promise<boolean>

是否存在

Overrides

RxDBAdapterRemoteBase.branchExists


connect()

connect(): Promise<IRxDBAdapter>;

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

连接数据库

Returns

Promise<IRxDBAdapter>

Implementation of

IRxDBAdapter.connect


disconnect()

disconnect(): Promise<void>;

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

取消连接

Returns

Promise<void>

Implementation of

IRxDBAdapter.disconnect


fetchMetadata()

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

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

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

按 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:326

获取远程变更数量(轻量级,不下载数据)(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:195

获取仓库

Type Parameters

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

Parameters

ParameterType
EntityTypeT

Returns

RT

Implementation of

IRxDBAdapter.getRepository

Overrides

RxDBAdapterRemoteBase.getRepository


isTableExisted()

isTableExisted(EntityType): Promise<boolean>;

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

判断 table 是否存在

Parameters

ParameterType
EntityTypeEntityType

Returns

Promise<boolean>

Implementation of

IRxDBAdapter.isTableExisted


mergeChanges()

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

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

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

通过 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>

Overrides

RxDBAdapterRemoteBase.mergeChanges


mutations()

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

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

批量修改实体(事务)

通过 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:687

拉取远程所有分支信息

Returns

Promise<RemoteBranchInfo[]>

远程分支数据数组

Overrides

RxDBAdapterRemoteBase.pullBranches


pullChanges()

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

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

从远程拉取变更记录

Parameters

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

Returns

Promise<RemoteChange[]>

RxDBChange 记录数组,按 id ASC 排序

Remarks

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

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

Overrides

RxDBAdapterRemoteBase.pullChanges


pullChangesBatch()

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

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

批量拉取多个实体的变更记录(单次 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:655

将本地分支数据推送到远程

Parameters

ParameterTypeDescription
branchesRecord<string, unknown>[]要推送的分支数据数组

Returns

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

同步结果 { synced: number, skipped: string[] }

Overrides

RxDBAdapterRemoteBase.pushBranches


pushChanges()

pushChanges(changes): Promise<void>;

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

推送变更记录到远程(双写:RxDBChange 表 + 实体表)

Parameters

ParameterTypeDescription
changesCompressedChange[]待推送的变更(已压缩)

Returns

Promise<void>

Deprecated

请使用 mergeChanges 代替,该方法不支持事务且效率较低

Throws

当任何变更推送失败时抛出错误


removeMany()

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

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

批量删除实体(非事务)

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

注册适配器的仓库

Type Parameters

Type Parameter
RT extends RepositoryBase<any>

Parameters

ParameterType
repositoryNamestring
RepositoryClassRepositoryConstructor<RT>

Returns

void

Inherited from

RxDBAdapterRemoteBase.repository


saveMany()

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

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

批量保存实体(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:134

获取数据库版本

Returns

Promise<string>

Implementation of

IRxDBAdapter.version