跳到主要内容

RxDBAdapterSupabase

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

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

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

适配器名称

Implementation of

IRxDBAdapter.name


options

readonly options: SupabaseAdapterOptions;

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


repository_cache

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

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

Inherited from

RxDBAdapterRemoteBase.repository_cache


repository_map

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

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

Inherited from

RxDBAdapterRemoteBase.repository_map


rxdb

readonly rxdb: RxDB;

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

Inherited from

RxDBAdapterRemoteBase.rxdb

Accessors

client

Get Signature

get client(): SupabaseClient;

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

Returns

SupabaseClient

Methods

connect()

connect(): Promise<IRxDBAdapter>;

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

连接数据库

Returns

Promise<IRxDBAdapter>

Implementation of

IRxDBAdapter.connect


disconnect()

disconnect(): Promise<void>;

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

取消连接

Returns

Promise<void>

Implementation of

IRxDBAdapter.disconnect


fetchMetadata()

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

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

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

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

Type Parameters

Type Parameter
T

Parameters

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

Returns

Observable<T[]>

Observable<T[]>

Overrides

RxDBAdapterRemoteBase.findByIds


getChangeCount()

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

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

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

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

Parameters

ParameterTypeDescription
sinceIdnumber起始 changeId(不包含该 ID)
repositoryFilter?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:156

获取仓库

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

判断 table 是否存在

Parameters

ParameterType
EntityTypeEntityType

Returns

Promise<boolean>

Implementation of

IRxDBAdapter.isTableExisted


mergeChanges()

mergeChanges(actions): Promise<any>;

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

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

通过 rxdb_mutations RPC 在单个事务中:

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

Parameters

ParameterTypeDescription
actionsSwitchVersionActions压缩后的变更操作集合

Returns

Promise<any>

Overrides

RxDBAdapterRemoteBase.mergeChanges


mutations()

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

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

批量修改实体(事务)

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

Type Parameters

Type Parameter
T extends EntityType

Parameters

ParameterType
optionsRxDBMutationsMap<T>

Returns

Promise<InstanceType<T>[]>

Implementation of

IRxDBAdapter.mutations


pullChanges()

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

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

从远程拉取变更记录

Parameters

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

Returns

Promise<RemoteChange[]>

RxDBChange 记录数组,按 id ASC 排序

Remarks

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

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

Overrides

RxDBAdapterRemoteBase.pullChanges


pushChanges()

pushChanges(changes): Promise<void>;

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

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

Parameters

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

Returns

Promise<void>

Deprecated

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

Throws

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


removeMany()

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

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

批量删除实体(非事务)

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

注册适配器的仓库

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

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

获取数据库版本

Returns

Promise<string>

Implementation of

IRxDBAdapter.version