跳到主要内容

RxDBClientGenerator

Defined in: core/RxDBClientGenerator.ts:224

RxDB Client 生成器

Constructors​

Constructor​

new RxDBClientGenerator(options?): RxDBClientGenerator;

Defined in: core/RxDBClientGenerator.ts:246

Parameters​

ParameterType
options?RxDBClientGeneratorOptions

Returns​

RxDBClientGenerator

Properties​

config​

config: Required<RxDBClientGeneratorOptions>;

Defined in: core/RxDBClientGenerator.ts:241


entityMetadataOptionsMap​

entityMetadataOptionsMap: Map<string, EntityMetadataOptions[]>;

Defined in: core/RxDBClientGenerator.ts:233


metadataMap​

metadataMap: Map<string, Readonly<EntityMetadataType>>;

Defined in: core/RxDBClientGenerator.ts:238


metadataOptionsSet​

metadataOptionsSet: Set<EntityMetadataOptions>;

Defined in: core/RxDBClientGenerator.ts:236


metadataSet​

metadataSet: Set<Readonly<EntityMetadataType>>;

Defined in: core/RxDBClientGenerator.ts:237


project​

project: Project;

Defined in: core/RxDBClientGenerator.ts:239

Methods​

addEntity()​

addEntity(
value,
options?,
sourceGetters?
): void;

Defined in: core/RxDBClientGenerator.ts:276

添加实体配置或带元数据的实体类。

实体名在本次生成器实例中必须唯一;重复实体或无法生成合法绑定标识符的输入会立即抛错。

Parameters​

ParameterTypeDefault valueDescription
value| EntityMetadataOptions | EntityTypeundefined实体元数据配置或由 @Entity 装饰的实体类
options?EntityMetadataOptions[]undefined继承的抽象元数据配置;省略时按 extends 的第一个父类型自动查找
sourceGetters?readonly EntitySourceGetter[][]需要追加到生成实体上的 getter 定义

Returns​

void

Throws​

实体名、属性、关系或 getter 与生成成员冲突时抛出


exec()​

exec(): void;

Defined in: core/RxDBClientGenerator.ts:403

执行生成器并在内存中创建生成文件。

调用完成后通过 getSourceFiles 读取文件文本;本类不会直接写入用户磁盘。 同一实例执行失败时不会替换上一次成功的 project。

Returns​

void

Throws​

元数据或生成符号校验失败时抛出


generateEntityJsFile()​

generateEntityJsFile(): void;

Defined in: core/RxDBClientGenerator.ts:431

生成实体的 js 文件 公开此方法以便测试使用

Returns​

void


getMetadata()​

getMetadata(mappedEntity, mappedNamespace?):
| Readonly<EntityMetadataType>
| undefined;

Defined in: core/RxDBClientGenerator.ts:336

按实体名称和 namespace 查找已登记的元数据。

Parameters​

ParameterTypeDescription
mappedEntitystring实体绑定名称
mappedNamespace?stringnamespace;省略时使用 NAMESPACE_PUBLIC

Returns​

| Readonly<EntityMetadataType> | undefined

对应元数据;不存在时返回 undefined


getRepositoryGenerator()​

getRepositoryGenerator(name):
| IRepositoryGenerator
| undefined;

Defined in: core/RxDBClientGenerator.ts:391

获取 Repository 生成器

Parameters​

ParameterTypeDescription
namestringRepository 名称

Returns​

| IRepositoryGenerator | undefined

对应的生成器,如果不存在则返回 undefined


getSourceFiles()​

getSourceFiles(): SourceFile[];

Defined in: core/RxDBClientGenerator.ts:423

获取最近一次成功执行生成器创建的文件。

Returns​

SourceFile[]

生成文件集合,包含 index barrel 和实体实现/声明文件

Throws​

尚未调用 exec 时抛出


getSourceGetters()​

getSourceGetters(metadata): readonly EntitySourceGetter[];

Defined in: core/RxDBClientGenerator.ts:314

读取实体附加的 getter 定义。

Parameters​

ParameterTypeDescription
metadataEntityMetadata已登记的实体元数据

Returns​

readonly EntitySourceGetter[]

登记过的 getter 快照;没有附加 getter 时返回空数组


registerAbstractMetadata()​

registerAbstractMetadata(abstractEntityName, metadataOptions): void;

Defined in: core/RxDBClientGenerator.ts:346

登记可被后续实体继承的抽象元数据。

Parameters​

ParameterTypeDescription
abstractEntityNamestring抽象实体绑定名称
metadataOptionsEntityMetadataOptions[]抽象实体的元数据选项,按父类顺序应用

Returns​

void


registerRepositoryGenerator()​

registerRepositoryGenerator(generator): void;

Defined in: core/RxDBClientGenerator.ts:374

注册 Repository 生成器 用于扩展支持自定义 Repository 类型

生成器声明的 IRepositoryGenerator.abstractEntityMetadata 会一并登记为抽象元数据, 调用方不必再手写一遍 registerAbstractMetadata。

重名一律拒绝,不会静默顶替。检查必须放在这里,不能只放在 CLI 装载路径 (cli/repository-generators.ts 的 registerRepositoryGenerators):直接 new RxDBClientGenerator() 后手动注册的编程调用方(例如 apps/dev-rxdb-angular 的 generator.page.ts)走不到 CLI 那一层,一个与已注册生成器同名的插件(比如也叫 Repository)会静默顶掉它,用到这个名字的实体随之换掉方法集且不报错。

Parameters​

ParameterTypeDescription
generatorIRepositoryGeneratorRepository 生成器实例

Returns​

void

Throws​

已存在同名生成器时抛出

Example​

const generator = new RxDBClientGenerator();
generator.registerRepositoryGenerator(new GeoRepositoryGenerator());

setMetadata()​

setMetadata(metadata): void;

Defined in: core/RxDBClientGenerator.ts:325

按 (namespace, name) 登记 metadata

键一律由 get_cache_key 构造。此前写入侧是手写拼接、读取侧走 get_cache_key,两边连 namespace 的兜底都不一致(写入侧 undefined 会 变成字面量 "undefined_Name")—— 任何调用方都不应再自行拼接(RCG-001)。

Parameters​

ParameterType
metadataEntityMetadata

Returns​

void