SchemaManager
Defined in: packages/rxdb/src/schema/SchemaManager.ts:47
SchemaManager 实现。
Properties
rxdb
protected readonly rxdb: RxDB;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:54
Methods
findMappedRelation()
findMappedRelation(meta, relation): FindMappedRelationResult<EntityRelationMetadata>;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:222
查找当前关系属性的映射关系
Parameters
| Parameter | Type | Description |
|---|---|---|
meta | EntityMetadata | - |
relation | EntityRelationMetadata | 当前关系属性 |
Returns
FindMappedRelationResult<EntityRelationMetadata>
getEntityMetadata()
getEntityMetadata(name, namespace):
| Readonly<EntityMetadataType>
| undefined;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:298
获取实体元数据
Parameters
| Parameter | Type |
|---|---|
name | string |
namespace | string |
Returns
| Readonly<EntityMetadataType>
| undefined
getEntityMetadataByTableName()
getEntityMetadataByTableName(tableName, namespace):
| Readonly<EntityMetadataType>
| undefined;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:326
通过 tableName 获取实体元数据
Parameters
| Parameter | Type | Description |
|---|---|---|
tableName | string | 数据库表名 |
namespace | string | 命名空间 |
Returns
| Readonly<EntityMetadataType>
| undefined
getEntityType()
getEntityType<T>(name, namespace): T | undefined;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:306
获取实体元数据
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type |
|---|---|
name | string |
namespace | string |
Returns
T | undefined
getEntityTypeByTableName()
getEntityTypeByTableName<T>(tableName, namespace): T | undefined;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:316
通过 tableName 获取实体类型
Type Parameters
| Type Parameter |
|---|
T extends EntityType |
Parameters
| Parameter | Type | Description |
|---|---|---|
tableName | string | 数据库表名 |
namespace | string | 命名空间 |
Returns
T | undefined
getFieldRelations()
getFieldRelations(metadata, field): GetFieldRelationsResult;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:259
通过查询条件的字段找出关系数组
Parameters
| Parameter | Type | Description |
|---|---|---|
metadata | EntityMetadata | - |
field | string | 查询条件的字段 |
Returns
GetFieldRelationsResult
init()
init(): void;
Defined in: packages/rxdb/src/schema/SchemaManager.ts:78
注册全部实体元数据,并把缺失的系统表补进 config.entities。
Returns
void
Remarks
补表是逐张判定的,不拿任何一张当「注入过了」的哨兵。
此前这里写的是 if (!entities.includes(RxDBBranch)) entities.push(...SYSTEM_ENTITIES),
而 RxDBBranch / RxDBChange / RxDBMigration / RxDBSync 四张表都从 src/index.ts
公开导出 —— 接入方只要在自己的 entities 里写了其中的 RxDBBranch(要给它加关系、
要在 devtools 里单独注册,都会这么写),整批系统表就一张都不会补进来。
在 epic-006 之前这个后果还藏得住:会写 RxDBBranch 的人通常四张一起写,缺的那部分
恰好是空集。现在装了 @aiao/rxdb-plugin-working-tree 的库有 14 张,其中 10 张不对外
导出,接入方没有任何写法能把它们列全,于是必然缺表 —— 症状是首次 commit() 时
entityManager.instantiate(CommitBranchRef) 抛 need init rxdb,一条读不出主语的错。
逐张判定同时保住了原来那个哨兵真正在解决的问题:entities 是 config 上那个可变
数组本身,init() 在 disconnect → reconnect 时会重跑,无条件 push 会让它无限增长。
清单取自 RxDB.systemEntities(核心四张 + 本实例 use() 过的贡献),
不是模块级的 SYSTEM_ENTITIES。后者是判定用的活视图、只增不减:拿它来注入,进程里
只要有任何一个库装了某个贡献方,没装的库也会被建出那些表、吃它们的迁移。