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
| Parameter | Type |
|---|---|
rxdb | RxDB |
options | SupabaseAdapterOptions |
Returns
RxDBAdapterSupabase
Overrides
RxDBAdapterRemoteBase.constructor
Properties
name
readonly name: "supabase" = ADAPTER_NAME;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:53
适配器名称
Implementation of
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
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
disconnect()
disconnect(): Promise<void>;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:88
取消连接
Returns
Promise<void>
Implementation of
fetchMetadata()
fetchMetadata(entityName, queryFilter): Observable<QueryCacheEntityMetadata[]>;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:521
获取实体元数据,用于新鲜度比较(QueryCache 专用)
只返回 { id, updatedAt } 元数据,网络传输量比完整数据减少 90%+。
Parameters
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体名称 |
queryFilter | RuleGroup<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
| Parameter | Type | Description |
|---|---|---|
entityName | string | 实体名称 |
ids | string[] | 需要获取的实体 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
| Parameter | Type | Description |
|---|---|---|
sinceId | number | 起始 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 Parameter | Default type |
|---|---|
T extends EntityType | - |
RT extends IRepository<T> | IRepository<T> |
Parameters
| Parameter | Type |
|---|---|
EntityType | T |
Returns
RT
Implementation of
Overrides
RxDBAdapterRemoteBase.getRepository
isTableExisted()
isTableExisted(EntityType): Promise<boolean>;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:175
判断 table 是否存在
Parameters
| Parameter | Type |
|---|---|
EntityType | EntityType |
Returns
Promise<boolean>
Implementation of
mergeChanges()
mergeChanges(actions): Promise<any>;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:385
应用压缩后的变更到远程(事务)
通过 rxdb_mutations RPC 在单个事务中:
- 写入 RxDBChange 表(用于其他客户端 pull)
- 应用 actions 到实体表(INSERT/UPDATE/DELETE)
- 自动跳过同步触发器(p_skip_sync=true)
Parameters
| Parameter | Type | Description |
|---|---|---|
actions | SwitchVersionActions | 压缩后的变更操作集合 |
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
| Parameter | Type |
|---|---|
options | RxDBMutationsMap<T> |
Returns
Promise<InstanceType<T>[]>
Implementation of
pullChanges()
pullChanges(
sinceId,
limit?,
repositoryFilter?,
filter?): Promise<RemoteChange[]>;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:207
从远程拉取变更记录
Parameters
| Parameter | Type | Default value | Description |
|---|---|---|---|
sinceId | number | undefined | 拉取此 ID 之后的变更(不包含该 ID) |
limit | number | 1000 | 最大拉取数量 |
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
| Parameter | Type | Description |
|---|---|---|
changes | any[] | 待推送的变更(已压缩) |
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
| Parameter | Type |
|---|---|
entities | InstanceType<T>[] |
Returns
Promise<InstanceType<T>[]>
Implementation of
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
| Parameter | Type |
|---|---|
repositoryName | string |
RepositoryClass | RepositoryConstructor<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
| Parameter | Type |
|---|---|
entities | InstanceType<T>[] |
Returns
Promise<InstanceType<T>[]>
Implementation of
version()
version(): Promise<string>;
Defined in: packages/rxdb-adapter-supabase/src/RxDBAdapterSupabase.ts:95
获取数据库版本
Returns
Promise<string>