跳到主要内容

EntityMetadataType

Defined in: packages/rxdb/src/entity/metadata.interface.ts:21

实体元数据类型 包含实体的所有元数据信息,如属性、关系、索引等

Extends​

  • SetRequired<EntityMetadataOptions, "namespace" | "displayName" | "tableName" | "repository" | "extends">

Properties​

abstract?​

optional abstract?: boolean;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:122

是否为抽象实体 抽象类是不能被实例化的

Inherited from​

EntityMetadataOptions.abstract


columnNameToPropertyName​

columnNameToPropertyName: Map<string, string>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:82

列名到属性名的反向映射 用于将数据库列名映射回 JS 属性名


computedProperties​

computedProperties: EntityPropertyMetadata[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:26

计算属性 动态计算的只读属性,不存储在数据库中

使用条件​

  • 必须在 features 中启用对应功能(如 tree:{ hasChildren: true })
  • 仅在实体上可读,不可修改

计算来源​

  1. 数据库查询:例如树结构的 hasChildren 属性
  2. 类方法:通过 getter 方法计算,如 fullName = firstName + lastName
  3. 复杂逻辑:基于业务规则动态生成(待实现)

Example​

// 树结构中的计算属性
computedProperties: [
`{ name: 'hasChildren', type: PropertyType.boolean }`
]

注意: 当前仅在树结构(tree feature)中使用

Overrides​

EntityMetadataOptions.computedProperties


computedPropertyMap​

computedPropertyMap: Map<string, EntityPropertyMetadata>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:41

实体所有计算属性的映射 键为属性名,值为属性元数据


defaultValueProperties​

defaultValueProperties: EntityPropertyMetadata[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:47

有默认值的属性列表 包含所有设置了默认值的属性元数据


displayName​

displayName: string;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:86

显示名称

Example​

"用户", "订单项"

Inherited from​

EntityMetadataOptions.displayName


encryptedPropertyMap​

encryptedPropertyMap: Map<string, EntityPropertyMetadata>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:95

加密属性映射 (新增于 004-local-field-encryption) 仅包含 encrypted: true 的 property,键为属性名。 若实体没有加密属性,size 为 0。


extends​

extends: string[];

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:92

继承的实体名称列表 表示当前实体继承自哪些实体

Inherited from​

EntityMetadataOptions.extends


features?​

optional features?: EntityMetadataFeatures;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:185

功能特性

Inherited from​

EntityMetadataOptions.features


foreignKeyColumnNames​

foreignKeyColumnNames: string[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:76

实体外键列名列表(数据库列名) 包含所有外键字段的数据库列名


foreignKeyNames​

foreignKeyNames: string[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:70

实体外键名称列表(JS 属性名) 包含所有外键字段的 JS 属性名


foreignKeyRelationMap​

foreignKeyRelationMap: Map<string, EntityRelationMetadata>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:58

实体外键关系的映射


foreignKeyRelations​

foreignKeyRelations: EntityRelationMetadata[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:64

实体外键关系列表 包含所有涉及外键的关系元数据


foreignKeys​

foreignKeys: object[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:29

实体级多列外键约束。

单列关系仍使用 relations;只有需要把多列作为一个整体校验时才使用本配置。

mappedEntity​

mappedEntity: Capitalize<string>;

被引用实体。

mappedNamespace​

mappedNamespace: Lowercase<string>;

被引用实体命名空间,默认继承当前实体命名空间。

mappedProperties​

mappedProperties: [string, ...string[]];

被引用实体的属性或关系 ID 字段。

name​

name: Uncapitalize<string>;

约束名。

onDelete?​

optional onDelete?:
| "NO ACTION"
| "RESTRICT"
| "CASCADE"
| "SET NULL"
| "SET DEFAULT"
| OnDeleteAction;

删除时的级联行为 定义删除父表记录时如何处理子表的外键

Example​
// 删除用户时级联删除订单
onDelete: OnDeleteAction.CASCADE

// 删除分类时将产品的分类ID设为NULL
onDelete: OnDeleteAction.SET_NULL

// 如果有订单则不允许删除用户
onDelete: OnDeleteAction.RESTRICT
Default​
根据关系类型自动推断

onUpdate?​

optional onUpdate?:
| "NO ACTION"
| "RESTRICT"
| "CASCADE"
| "SET NULL"
| "SET DEFAULT"
| OnUpdateAction;

更新时的级联行为 定义更新父表主键时如何处理子表的外键

Example​
// 更新用户ID时级联更新订单的user_id
onUpdate: OnUpdateAction.CASCADE

// 不允许更新主键(推荐)
onUpdate: OnUpdateAction.RESTRICT
Default​
OnUpdateAction.RESTRICT(推荐不更新主键)

properties​

properties: [string, ...string[]];

当前实体的属性或关系 ID 字段。

Overrides​

EntityMetadataOptions.foreignKeys


indexes​

indexes: EntityIndexMetadataOptions[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:28

实体的索引配置 自己定义的索引,不包括继承的

Overrides​

EntityMetadataOptions.indexes


indexMap​

indexMap: Map<string, EntityIndexMetadataOptions>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:88

实体所有索引的映射 键为索引名,值为索引元数据


log?​

optional log?: boolean;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:111

是否开启日志

Default​

true

Inherited from​

EntityMetadataOptions.log


name​

name: Capitalize<string>;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:73

名称

Inherited from​

EntityMetadataOptions.name


namespace​

namespace: Lowercase<string>;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:68

命名空间 只能包含小写的英文字母 在 postgres 里会变成 schema 在 sqlite 会变成 table 的前缀

Example​

"app", "system"

Default​

"public"

Inherited from​

EntityMetadataOptions.namespace


properties​

properties: EntityPropertyMetadata[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:25

实体的属性表 自己定义的属性,不包括继承的

Overrides​

EntityMetadataOptions.properties


propertyMap​

propertyMap: Map<string, EntityPropertyMetadata>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:35

实体所有属性的映射 键为属性名,值为属性元数据


relationMap​

relationMap: Map<string, EntityRelationMetadata>;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:53

实体所有关系的映射 键为关系属性名,值为关系元数据


relations​

relations: EntityRelationMetadata[];

Defined in: packages/rxdb/src/entity/metadata.interface.ts:27

实体的关系配置 自己定义的关系,不包括继承的

定义实体与其他实体之间的关联关系,支持四种关系类型:

  • ONE_TO_ONE:一对一关系,如用户和用户资料
  • ONE_TO_MANY:一对多关系,如用户和用户的多篇文章
  • MANY_TO_ONE:多对一关系,如多篇文章和一个作者
  • MANY_TO_MANY:多对多关系,如学生和课程

系统会根据关系配置自动处理外键、查询和关联操作

Overrides​

EntityMetadataOptions.relations


repository​

repository: RxDBRepositoryName;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:105

自定义 repository

Remarks​

取值来自门面轴注册表 RxDBRepositoryName:核心的 Repository 与插件经 declare module 注册的门面(如 TreeRepository / GraphRepository) 在补全里同为一等公民。 名字没经 RxDB.repository() 登记过时,EntityManager.init() 仍会抛错拦下。

Default​

"Repository"

Inherited from​

EntityMetadataOptions.repository


sync?​

optional sync?: SyncOptions;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:116

实体同步配置

Inherited from​

EntityMetadataOptions.sync


tableName​

tableName: string;

Defined in: packages/rxdb/src/entity/entity-options.interface.ts:80

表名称 数据库中的表名称 没有填写就是 name 一样

Inherited from​

EntityMetadataOptions.tableName

Methods​

isForeignKey()​

isForeignKey(name): boolean;

Defined in: packages/rxdb/src/entity/metadata.interface.ts:102

判断属性名是否是外键

Parameters​

ParameterTypeDescription
namestring要检查的属性名

Returns​

boolean