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 }) - 仅在实体上可读,不可修改
计算来源
- 数据库查询:例如树结构的
hasChildren属性 - 类方法:通过 getter 方法计算,如
fullName = firstName + lastName - 复杂逻辑:基于业务规则动态生成(待实现)
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
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
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
name
name: Capitalize<string>;
Defined in: packages/rxdb/src/entity/entity-options.interface.ts:73
名称
Inherited from
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
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
| Parameter | Type | Description |
|---|---|---|
name | string | 要检查的属性名 |
Returns
boolean