跳到主要内容

TreeRepository<T, RepositoryType>

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:42

树结构实体仓库 根据配置决策实体的具体操作

Example​

// ✅ 正确:继承 TreeAdjacencyListEntityBase
// 不必写 repository:`repository: 'TreeRepository'` 与 `features.tree` 都由基类声明,
// 沿原型链继承下来(要覆盖就在自己的 @Entity 里显式声明)
@Entity({ name: 'Category' })
class Category extends TreeAdjacencyListEntityBase {
name!: string;
}

// 可以使用树查询方法
Category.findDescendants({ entityId: 'root-id' });
Category.findAncestors({ entityId: 'leaf-id' });

// ❌ 错误:只继承 EntityBase,没有实现 ITreeEntity
@Entity({ name: 'User' })
class User extends EntityBase {
name!: string;
}

// 编译错误:User 不满足 TreeRepository 的类型约束
// User.findDescendants({ entityId: 'id' }); // TypeScript 错误

Extends​

Type Parameters​

Type ParameterDefault typeDescription
T extends EntityType & (...args) => ITreeEntity-必须是实现 ITreeEntity 接口的实体类型(通常继承 TreeAdjacencyListEntityBase)
RepositoryType extends ITreeRepository<T>ITreeRepository<T>-

Constructors​

Constructor​

new TreeRepository<T, RepositoryType>(rxdb, EntityType): TreeRepository<T, RepositoryType>;

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:50

Parameters​

ParameterType
rxdbRxDB
EntityTypeT

Returns​

TreeRepository<T, RepositoryType>

Overrides​

Repository.constructor

Properties​

_setLocal​

protected _setLocal: (entity) => void;

Defined in: rxdb/dist/repository/Repository.d.ts:124

设置状态 local

Parameters​

ParameterType
entityInstanceType<T>

Returns​

void

Inherited from​

Repository._setLocal


_setLocals​

protected _setLocals: (entities) => void;

Defined in: rxdb/dist/repository/Repository.d.ts:125

Parameters​

ParameterType
entitiesInstanceType<T>[]

Returns​

void

Inherited from​

Repository._setLocals


EntityType​

readonly EntityType: T;

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:20

Inherited from​

Repository.EntityType


local$​

protected readonly local$: Observable<RepositoryType>;

Defined in: rxdb/dist/repository/Repository.d.ts:20

本地仓库

Inherited from​

Repository.local$


primary$​

protected readonly primary$: Observable<RepositoryType>;

Defined in: rxdb/dist/repository/Repository.d.ts:30

主仓库(根据 SyncOptions 选择 local 或 remote)

  • SyncType.None + 只有 remote:使用 remote$
  • 其他情况:使用 local$

Inherited from​

Repository.primary$


queryManager​

protected readonly queryManager: QueryManager<T>;

Defined in: rxdb/dist/repository/Repository.d.ts:34

查询缓存管理器

Inherited from​

Repository.queryManager


remote$​

protected readonly remote$: Observable<IRepository<T>>;

Defined in: rxdb/dist/repository/Repository.d.ts:24

远程仓库

Inherited from​

Repository.remote$


rxdb​

protected readonly rxdb: RxDB;

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:19

Inherited from​

Repository.rxdb


sync​

readonly sync: SyncOptions;

Defined in: rxdb/dist/repository/Repository.d.ts:42

本实例对该实体的生效同步配置(经 rxdb.entitySync.resolve 解析)

Remarks​

只读:被 syncOverrides 覆盖的实体拿到的是实例冻结的快照,运行时改它的字段会抛 TypeError。 未覆盖实体这里恰好是装饰器或库级配置原对象,同样不要改 —— 其他实例也在读它。

Inherited from​

Repository.sync


_STATIC_METHODS​

protected static _STATIC_METHODS: string[];

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:48

子类声明的"静态方法名"清单,用于把 User.findOne(...) 这样的方法 注入到实体类上(EntityManager.init 时挂)。

Remarks​

用类字段 static 而非构造器里赋值 —— 字段初始化在 extends 链上是自底向上 合并的,所以子类定义的 _STATIC_METHODS 不会丢;运行时反射取的是当前类的字段。

Overrides​

Repository._STATIC_METHODS

Accessors​

staticMethods​

Get Signature​

get static staticMethods(): string[];

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:37

当前类(含继承链上各层)声明的全部静态方法名

Remarks​

没有沿原型链累加:每个子类自己写一份 _STATIC_METHODS,避免运行时 反射出祖先的 get / findOne 这类名字后,再被后代意外覆盖一次。

Returns​

string[]

Inherited from​

Repository.staticMethods

Methods​

count()​

count(options): Observable<number>;

Defined in: rxdb/dist/repository/Repository.d.ts:97

查询实体数量

Parameters​

ParameterTypeDescription
optionsCountOptions<T>查询选项,包含 where 条件

Returns​

Observable<number>

Inherited from​

Repository.count


countAncestors()​

countAncestors(options): Observable<number>;

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:112

查询祖先数量

Parameters​

ParameterType
optionsFindTreeOptions<T>

Returns​

Observable<number>


countDescendants()​

countDescendants(options): Observable<number>;

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:82

查询子孙数量

Parameters​

ParameterType
optionsFindTreeOptions<T>

Returns​

Observable<number>


create()​

create(entity): Promise<InstanceType<T>>;

Defined in: rxdb/dist/repository/Repository.d.ts:102

创建实体

Parameters​

ParameterTypeDescription
entityInstanceType<T>要创建的实体实例

Returns​

Promise<InstanceType<T>>

Inherited from​

Repository.create


createEntityRef()​

createEntityRef(data): EntityInstanceType<T>;

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:50

创建(或复用)一个实体引用

Parameters​

ParameterTypeDescription
dataEntityUpdateData<T>字段初始值;其中 id 缺省时会自动生成

Returns​

EntityInstanceType<T>

已挂到 EntityManager 缓存里的实体实例

Remarks​

不管入参 id 是否已存在于缓存,都会优先返回缓存里的实例(覆盖式刷新); 走 rxdb.entityManager.createEntityRef 是为了复用同一份引用语义,避免 不同调用栈里拿到的是两个状态不同步的克隆。

Inherited from​

Repository.createEntityRef


destroy()​

destroy(): void;

Defined in: rxdb/dist/repository/Repository.d.ts:54

销毁本仓储:摘掉事件监听、清空同步记忆、关掉查询管理器。

Returns​

void

Remarks​

#queryCacheSession.clear() 不是顺手做的清理,而是释放资源:记忆表的每一条都挂着一个 setTimeout,窗口由 syncStaleTime 决定(可配成分钟级)。不清的话,断连时销毁的 仓储连同它的记忆闭包会被这些计时器钉在事件循环上直到窗口自己走完 —— Node / Electron 里这还会拖住进程退出。clear() 同时递增代次,销毁瞬间还在飞的同步回来时不会把 记忆写回一个已经死掉的仓储。

Inherited from​

Repository.destroy


find()​

find(options): Observable<InstanceType<T>[]>;

Defined in: rxdb/dist/repository/Repository.d.ts:74

查询多个实体

Parameters​

ParameterTypeDescription
optionsFindOptions<T>查询选项,包含 where 条件、limit、offset 等

Returns​

Observable<InstanceType<T>[]>

Inherited from​

Repository.find


findAll()​

findAll(options): Observable<InstanceType<T>[]>;

Defined in: rxdb/dist/repository/Repository.d.ts:80

查询所有实体

Parameters​

ParameterTypeDescription
optionsFindAllOptions<T>查询选项,包含 where 条件和排序(不限制数量)

Returns​

Observable<InstanceType<T>[]>

Inherited from​

Repository.findAll


findAncestors()​

findAncestors(options): Observable<InstanceType<T>[]>;

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:95

查询祖先

Parameters​

ParameterType
optionsFindTreeOptions<T>

Returns​

Observable<InstanceType<T>[]>


findByCursor()​

findByCursor(options): Observable<InstanceType<T>[]>;

Defined in: rxdb/dist/repository/Repository.d.ts:92

通过游标进行分页查询

Parameters​

ParameterTypeDescription
optionsFindByCursorOptions<T>游标分页选项,包含 orderBy、before/after 游标

Returns​

Observable<InstanceType<T>[]>

Remarks​

before(反向翻页)需要反转排序后再查:limit 在 SQL 里永远从结果集开头截取, 保持调用方的正向排序就只会拿到整个集合最靠前的那一页,而不是紧挨游标之前的一页。 因此下发适配器时反转 orderBy,返回调用方之前再把数组还原成调用方要求的顺序 —— 增量合并(merge_create.ts 的 findByCursor 分支)也按 options.orderBy 排序后切片, 两侧必须同序。

Inherited from​

Repository.findByCursor


findDescendants()​

findDescendants(options): Observable<InstanceType<T>[]>;

Defined in: rxdb-plugin-tree/src/repository/TreeRepository.ts:65

查询子孙

Parameters​

ParameterType
optionsFindTreeOptions<T>

Returns​

Observable<InstanceType<T>[]>


findOne()​

findOne(options): Observable<InstanceType<T> | null>;

Defined in: rxdb/dist/repository/Repository.d.ts:64

查找一个实体

Parameters​

ParameterTypeDescription
optionsFindOneOptions<T>查询选项,包含 where 条件

Returns​

Observable<InstanceType<T> | null>

Inherited from​

Repository.findOne


findOneOrFail()​

findOneOrFail(options): Observable<InstanceType<T>>;

Defined in: rxdb/dist/repository/Repository.d.ts:69

查找一个实体,查不到就抛出错误

Parameters​

ParameterTypeDescription
optionsFindOneOrFailOptions<T>查询选项,包含 where 条件

Returns​

Observable<InstanceType<T>>

Inherited from​

Repository.findOneOrFail


get()​

get(id): Observable<InstanceType<T>>;

Defined in: rxdb/dist/repository/Repository.d.ts:59

根据 id 获取实体

Parameters​

ParameterTypeDescription
idEntityStaticType<T, "idType">实体的唯一标识符

Returns​

Observable<InstanceType<T>>

Inherited from​

Repository.get


getEntityRef()​

getEntityRef(id):
| EntityInstanceType<T>
| undefined;

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:57

按 ID 在当前进程的实体缓存中查找实体

Parameters​

ParameterTypeDescription
idEntityStaticType<T, "idType">实体主键

Returns​

| EntityInstanceType<T> | undefined

缓存命中则返回实例,未命中返回 undefined(不触发数据库查询)

Inherited from​

Repository.getEntityRef


hasEntityRef()​

hasEntityRef(id): boolean;

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:68

判定当前进程的实体缓存里是否有指定 ID

Parameters​

ParameterTypeDescription
idEntityStaticType<T, "idType">实体主键

Returns​

boolean

缓存命中返回 true,否则 false

Remarks​

等价于 getEntityRef(id) !== undefined,单独提供是为了让"批量预热"和 "差异同步"等热点路径省掉一次引用创建 / 取状态的开销。

Inherited from​

Repository.hasEntityRef


rawQuery()​

protected rawQuery(sql, params?): Promise<RawQueryResult>;

Defined in: rxdb/dist/repository/Repository.d.ts:120

执行原始 SQL 查询 用于条件 UPDATE 等需要绕过 ORM 的场景

Parameters​

ParameterTypeDescription
sqlstringSQL 语句
params?unknown[]绑定参数

Returns​

Promise<RawQueryResult>

Inherited from​

Repository.rawQuery


remove()​

remove(entity): Promise<InstanceType<T>>;

Defined in: rxdb/dist/repository/Repository.d.ts:113

删除实体

Parameters​

ParameterTypeDescription
entityInstanceType<T>要删除的实体实例

Returns​

Promise<InstanceType<T>>

Inherited from​

Repository.remove


update()​

update(entity, patch): Promise<InstanceType<T>>;

Defined in: rxdb/dist/repository/Repository.d.ts:108

更新实体

Parameters​

ParameterTypeDescription
entityInstanceType<T>要更新的实体实例
patchPartial<InstanceType<T>>部分更新数据

Returns​

Promise<InstanceType<T>>

Inherited from​

Repository.update


updateEntity()​

updateEntity(entity, update): void;

Defined in: rxdb/dist/repository/RepositoryBase.d.ts:80

用 update 覆盖实体字段

Parameters​

ParameterTypeDescription
entityInstanceType<T>目标实体
updateInstanceType<T>待写入的字段;主键 id 也会被赋值(用于 hydrate 场景)

Returns​

void

Remarks​

走 EntityStatus.applyExternal,保证 dirty tracking 与 patch 生成走的是同一条路径, 且实体有未保存编辑时逐字段避让而不是整行覆盖 —— 活查询整批回填会命中已被用户改过的实体, 无条件 replace 会静默吃掉那些编辑。

Inherited from​

Repository.updateEntity