Repository<T, RT>
Defined in: packages/rxdb/src/repository/Repository.ts:62
实体仓库 根据配置决策实体的具体操作
Extends
Extended by
Type Parameters
| Type Parameter | Default type |
|---|---|
T extends EntityType | - |
RT extends IRepository<T> | IRepository<T> |
Constructors
Constructor
new Repository<T, RT>(rxdb, EntityType): Repository<T, RT>;
Defined in: packages/rxdb/src/repository/Repository.ts:151
Parameters
| Parameter | Type |
|---|---|
rxdb | RxDB |
EntityType | T |
Returns
Repository<T, RT>
Overrides
Properties
EntityType
readonly EntityType: T;
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:44
Inherited from
local$
protected readonly local$: Observable<RT>;
Defined in: packages/rxdb/src/repository/Repository.ts:123
本地仓库
primary$
protected readonly primary$: Observable<RT>;
Defined in: packages/rxdb/src/repository/Repository.ts:135
主仓库(根据 SyncOptions 选择 local 或 remote)
- SyncType.None + 只有 remote:使用 remote$
- 其他情况:使用 local$
queryManager
protected readonly queryManager: QueryManager<T>;
Defined in: packages/rxdb/src/repository/Repository.ts:140
查询缓存管理器
remote$
protected readonly remote$: Observable<IRepository<T>>;
Defined in: packages/rxdb/src/repository/Repository.ts:128
远程仓库
rxdb
protected readonly rxdb: RxDB;
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:43
Inherited from
sync
readonly sync: SyncOptions;
Defined in: packages/rxdb/src/repository/Repository.ts:149
本实例对该实体的生效同步配置(经 rxdb.entitySync.resolve 解析)
Remarks
只读:被 syncOverrides 覆盖的实体拿到的是实例冻结的快照,运行时改它的字段会抛 TypeError。
未覆盖实体这里恰好是装饰器或库级配置原对象,同样不要改 —— 其他实例也在读它。
_STATIC_METHODS
protected static _STATIC_METHODS: string[];
Defined in: packages/rxdb/src/repository/Repository.ts:109
子类声明的"静态方法名"清单,用于把 User.findOne(...) 这样的方法
注入到实体类上(EntityManager.init 时挂)。
Remarks
用类字段 static 而非构造器里赋值 —— 字段初始化在 extends 链上是自底向上
合并的,所以子类定义的 _STATIC_METHODS 不会丢;运行时反射取的是当前类的字段。
Overrides
RepositoryBase._STATIC_METHODS
Accessors
staticMethods
Get Signature
get static staticMethods(): string[];
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:38
当前类(含继承链上各层)声明的全部静态方法名
Remarks
没有沿原型链累加:每个子类自己写一份 _STATIC_METHODS,避免运行时
反射出祖先的 get / findOne 这类名字后,再被后代意外覆盖一次。
Returns
string[]
Inherited from
Methods
_setLocal()
protected _setLocal(entity): void;
Defined in: packages/rxdb/src/repository/Repository.ts:452
设置状态 local
Parameters
| Parameter | Type |
|---|---|
entity | InstanceType<T> |
Returns
void
_setLocals()
protected _setLocals(entities): void;
Defined in: packages/rxdb/src/repository/Repository.ts:464
Parameters
| Parameter | Type |
|---|---|
entities | InstanceType<T>[] |
Returns
void
count()
count(options): Observable<number>;
Defined in: packages/rxdb/src/repository/Repository.ts:392
查询实体数量
Parameters
| Parameter | Type | Description |
|---|---|---|
options | CountOptions<T> | 查询选项,包含 where 条件 |
Returns
Observable<number>
create()
create(entity): Promise<InstanceType<T>>;
Defined in: packages/rxdb/src/repository/Repository.ts:405
创建实体
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 要创建的实体实例 |
Returns
Promise<InstanceType<T>>
createEntityRef()
createEntityRef(data): EntityInstanceType<T>;
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:58
创建(或复用)一个实体引用
Parameters
| Parameter | Type | Description |
|---|---|---|
data | EntityUpdateData<T> | 字段初始值;其中 id 缺省时会自动生成 |
Returns
已挂到 EntityManager 缓存里的实体实例
Remarks
不管入参 id 是否已存在于缓存,都会优先返回缓存里的实例(覆盖式刷新);
走 rxdb.entityManager.createEntityRef 是为了复用同一份引用语义,避免
不同调用栈里拿到的是两个状态不同步的克隆。
Inherited from
RepositoryBase.createEntityRef
destroy()
destroy(): void;
Defined in: packages/rxdb/src/repository/Repository.ts:203
销毁本仓储:摘掉事件监听、清空同步记忆、关掉查询管理器。
Returns
void
Remarks
#queryCacheSession.clear() 不是顺手做的清理,而是释放资源:记忆表的每一条都挂着一个
setTimeout,窗口由 syncStaleTime 决定(可配成分钟级)。不清的话,断连时销毁的
仓储连同它的记忆闭包会被这些计时器钉在事件循环上直到窗口自己走完 —— Node / Electron
里这还会拖住进程退出。clear() 同时递增代次,销毁瞬间还在飞的同步回来时不会把
记忆写回一个已经死掉的仓储。
find()
find(options): Observable<InstanceType<T>[]>;
Defined in: packages/rxdb/src/repository/Repository.ts:290
查询多个实体
Parameters
| Parameter | Type | Description |
|---|---|---|
options | FindOptions<T> | 查询选项,包含 where 条件、limit、offset 等 |
Returns
Observable<InstanceType<T>[]>
findAll()
findAll(options): Observable<InstanceType<T>[]>;
Defined in: packages/rxdb/src/repository/Repository.ts:323
查询所有实体
Parameters
| Parameter | Type | Description |
|---|---|---|
options | FindAllOptions<T> | 查询选项,包含 where 条件和排序(不限制数量) |
Returns
Observable<InstanceType<T>[]>
findByCursor()
findByCursor(options): Observable<InstanceType<T>[]>;
Defined in: packages/rxdb/src/repository/Repository.ts:347
通过游标进行分页查询
Parameters
| Parameter | Type | Description |
|---|---|---|
options | FindByCursorOptions<T> | 游标分页选项,包含 orderBy、before/after 游标 |
Returns
Observable<InstanceType<T>[]>
Remarks
before(反向翻页)需要反转排序后再查:limit 在 SQL 里永远从结果集开头截取,
保持调用方的正向排序就只会拿到整个集合最靠前的那一页,而不是紧挨游标之前的一页。
因此下发适配器时反转 orderBy,返回调用方之前再把数组还原成调用方要求的顺序 ——
增量合并(merge_create.ts 的 findByCursor 分支)也按 options.orderBy 排序后切片,
两侧必须同序。
findOne()
findOne(options): Observable<InstanceType<T> | null>;
Defined in: packages/rxdb/src/repository/Repository.ts:251
查找一个实体
Parameters
| Parameter | Type | Description |
|---|---|---|
options | FindOneOptions<T> | 查询选项,包含 where 条件 |
Returns
Observable<InstanceType<T> | null>
findOneOrFail()
findOneOrFail(options): Observable<InstanceType<T>>;
Defined in: packages/rxdb/src/repository/Repository.ts:269
查找一个实体,查不到就抛出错误
Parameters
| Parameter | Type | Description |
|---|---|---|
options | FindOneOrFailOptions<T> | 查询选项,包含 where 条件 |
Returns
Observable<InstanceType<T>>
get()
get(id): Observable<InstanceType<T>>;
Defined in: packages/rxdb/src/repository/Repository.ts:217
根据 id 获取实体
Parameters
| Parameter | Type | Description |
|---|---|---|
id | EntityStaticType<T, "idType"> | 实体的唯一标识符 |
Returns
Observable<InstanceType<T>>
getEntityRef()
getEntityRef(id):
| EntityInstanceType<T>
| undefined;
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:68
按 ID 在当前进程的实体缓存中查找实体
Parameters
| Parameter | Type | Description |
|---|---|---|
id | EntityStaticType<T, "idType"> | 实体主键 |
Returns
| EntityInstanceType<T>
| undefined
缓存命中则返回实例,未命中返回 undefined(不触发数据库查询)
Inherited from
hasEntityRef()
hasEntityRef(id): boolean;
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:82
判定当前进程的实体缓存里是否有指定 ID
Parameters
| Parameter | Type | Description |
|---|---|---|
id | EntityStaticType<T, "idType"> | 实体主键 |
Returns
boolean
缓存命中返回 true,否则 false
Remarks
等价于 getEntityRef(id) !== undefined,单独提供是为了让"批量预热"和
"差异同步"等热点路径省掉一次引用创建 / 取状态的开销。
Inherited from
rawQuery()
protected rawQuery(sql, params?): Promise<RawQueryResult>;
Defined in: packages/rxdb/src/repository/Repository.ts:441
执行原始 SQL 查询 用于条件 UPDATE 等需要绕过 ORM 的场景
Parameters
| Parameter | Type | Description |
|---|---|---|
sql | string | SQL 语句 |
params? | unknown[] | 绑定参数 |
Returns
Promise<RawQueryResult>
remove()
remove(entity): Promise<InstanceType<T>>;
Defined in: packages/rxdb/src/repository/Repository.ts:430
删除实体
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 要删除的实体实例 |
Returns
Promise<InstanceType<T>>
update()
update(entity, patch): Promise<InstanceType<T>>;
Defined in: packages/rxdb/src/repository/Repository.ts:418
更新实体
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 要更新的实体实例 |
patch | Partial<InstanceType<T>> | 部分更新数据 |
Returns
Promise<InstanceType<T>>
updateEntity()
updateEntity(entity, update): void;
Defined in: packages/rxdb/src/repository/RepositoryBase.ts:97
用 update 覆盖实体字段
Parameters
| Parameter | Type | Description |
|---|---|---|
entity | InstanceType<T> | 目标实体 |
update | InstanceType<T> | 待写入的字段;主键 id 也会被赋值(用于 hydrate 场景) |
Returns
void
Remarks
走 EntityStatus.applyExternal,保证 dirty tracking 与 patch 生成走的是同一条路径,
且实体有未保存编辑时逐字段避让而不是整行覆盖 —— 活查询整批回填会命中已被用户改过的实体,
无条件 replace 会静默吃掉那些编辑。