SupabaseRepository<T>
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:57
Supabase Repository(Supabase 仓库) 提供对 Supabase 表的 CRUD 操作
Extends
Extended by
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Implements
IRepository<T>
Constructors
Constructor
new SupabaseRepository<T>(adapter, EntityType): SupabaseRepository<T>;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:60
Parameters
| Parameter | Type |
|---|---|
adapter | RxDBAdapterSupabase |
EntityType | T |
Returns
SupabaseRepository<T>
Overrides
Properties
adapter
protected readonly adapter: RxDBAdapterSupabase;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:61
EntityType
readonly EntityType: T;
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:20
Inherited from
metadata
protected readonly metadata: EntityMetadata;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:58
rxdb
protected readonly rxdb: RxDB;
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:19
Inherited from
_STATIC_METHODS
protected static _STATIC_METHODS: string[];
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:29
子类声明的"静态方法名"清单,用于把 User.findOne(...) 这样的方法
注入到实体类上(EntityManager.init 时挂)。
Remarks
用类字段 static 而非构造器里赋值 —— 字段初始化在 extends 链上是自底向上
合并的,所以子类定义的 _STATIC_METHODS 不会丢;运行时反射取的是当前类的字段。
Inherited from
RepositoryBase._STATIC_METHODS
Accessors
staticMethods
Get Signature
get static staticMethods(): string[];
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:37
当前类(含继承链上各层)声明的全部静态方法名
Remarks
没有沿原型链累加:每个子类自己写一份 _STATIC_METHODS,避免运行时
反射出祖先的 get / findOne 这类名字后,再被后代意外覆盖一次。
Returns
string[]
Inherited from
Methods
count()
count(options): Promise<number>;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:143
统计满足条件的实体数量。
使用 PostgREST 的 count=exact + head=true,仅返回计数不下载行数据。
暂不支持 groupBy。
Parameters
| Parameter | Type | Description |
|---|---|---|
options | EntityStaticType<T, "countOptions"> | 查询条件(where / groupBy) |
Returns
Promise<number>
实体总数(无匹配时返回 0)
Throws
传入 groupBy(暂未实现)
Throws
NetworkOfflineError 连不上远端(判离线用 core 的 isNetworkError,不要按 SupabaseDataError 捕获)
Throws
远端拒绝(RLS / 约束 / 语法等)
Implementation of
create()
create(entity): Promise<InstanceType<T>>;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:168
创建实体并落库。
若 rxdb.context.userId 存在,会自动注入 createdBy / updatedBy 审计字段。
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 待创建的实体(必须包含主键 id) |
Returns
Promise<InstanceType<T>>
创建后的实体(含数据库回填字段如 createdAt,已通过 transform_row_to_entity 还原为类型实例)
Throws
NetworkOfflineError 连不上远端(判离线用 core 的 isNetworkError,不要按 SupabaseDataError 捕获)
Throws
远端拒绝插入(主键冲突 / RLS / 约束等)
Implementation of
createEntityRef()
createEntityRef(data): EntityInstanceType<T>;
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:50
创建(或复用)一个实体引用
Parameters
| Parameter | Type | Description |
|---|---|---|
data | EntityUpdateData<T> | 字段初始值;其中 id 缺省时会自动生成 |
Returns
已挂到 EntityManager 缓存里的实体实例
Remarks
不管入参 id 是否已存在于缓存,都会优先返回缓存里的实例(覆盖式刷新);
走 rxdb.entityManager.createEntityRef 是为了复用同一份引用语义,避免
不同调用栈里拿到的是两个状态不同步的克隆。
Inherited from
RepositoryBase.createEntityRef
find()
find(options): Promise<InstanceType<T>[]>;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:79
查询多个实体。
自动按 1000 行分页拉取直到 limit 满足或数据耗尽,避免单次请求超过 PostgREST 的默认上限。
当 where 含跨表条件时会附加 !inner 关系 SELECT,确保关联过滤生效。
Parameters
| Parameter | Type | Description |
|---|---|---|
options | EntityStaticType<T, "findOptions"> | 查询条件(where / orderBy / limit / offset) |
Returns
Promise<InstanceType<T>[]>
满足条件的实体数组(已通过 transform_row_to_entity 还原为类型实例)
Throws
NetworkOfflineError 连不上远端(判离线用 core 的 isNetworkError,不要按 SupabaseDataError 捕获)
Throws
远端拒绝(RLS / 约束 / 语法等)
Implementation of
getEntityRef()
getEntityRef(id):
| EntityInstanceType<T>
| undefined;
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:57
按 ID 在当前进程的实体缓存中查找实体
Parameters
| Parameter | Type | Description |
|---|---|---|
id | EntityStaticType<T, "idType"> | 实体主键 |
Returns
| EntityInstanceType<T>
| undefined
缓存命中则返回实例,未命中返回 undefined(不触发数据库查询)
Inherited from
hasEntityRef()
hasEntityRef(id): boolean;
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:68
判定当前进程的实体缓存里是否有指定 ID
Parameters
| Parameter | Type | Description |
|---|---|---|
id | EntityStaticType<T, "idType"> | 实体主键 |
Returns
boolean
缓存命中返回 true,否则 false
Remarks
等价于 getEntityRef(id) !== undefined,单独提供是为了让"批量预热"和
"差异同步"等热点路径省掉一次引用创建 / 取状态的开销。
Inherited from
remove()
remove(entity): Promise<InstanceType<T>>;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:222
按 id 硬删除实体(无软删 / tombstone)。
返回原始 entity 引用方便链式处理;如需服务端回填字段请改用 find/update。
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 目标实体(仅取 id 用于定位行) |
Returns
Promise<InstanceType<T>>
传入的 entity(删除成功后原样返回)
Throws
NetworkOfflineError 连不上远端(判离线用 core 的 isNetworkError,不要按 SupabaseDataError 捕获)
Throws
RLS 拒绝,或删除的行与目标 id 不符
Implementation of
update()
update(entity, patch): Promise<InstanceType<T>>;
Defined in: packages/rxdb-adapter-supabase/src/SupabaseRepository.ts:196
按 id 部分更新实体。
若 rxdb.context.userId 存在,会自动注入 updatedBy 审计字段。 服务端的触发器/默认值会回填到返回结果。
用户 patch 先由 normalizeUpdateEntity 过滤 readonly 字段,系统审计字段随后单独注入。
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 目标实体(仅取 id 用于定位行) |
patch | Partial<InstanceType<T>> | 增量字段(不含 id) |
Returns
Promise<InstanceType<T>>
更新后的实体(已通过 transform_row_to_entity 还原为类型实例)
Throws
NetworkOfflineError 连不上远端(判离线用 core 的 isNetworkError,不要按 SupabaseDataError 捕获)
Throws
行不存在 / RLS 拒绝
Implementation of
updateEntity()
updateEntity(entity, update): void;
Defined in: packages/rxdb/dist/repository/RepositoryBase.d.ts:80
用 update 覆盖实体字段
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 目标实体 |
update | InstanceType<T> | 待写入的字段;主键 id 也会被赋值(用于 hydrate 场景) |
Returns
void
Remarks
走 EntityStatus.applyExternal,保证 dirty tracking 与 patch 生成走的是同一条路径,
且实体有未保存编辑时逐字段避让而不是整行覆盖 —— 活查询整批回填会命中已被用户改过的实体,
无条件 replace 会静默吃掉那些编辑。