跳到主要内容

EntityIndexMetadataOptions

Defined in: packages/rxdb/src/entity/property-types.interface.ts:502

实体索引元数据接口 定义实体索引的配置

Extends​

  • IEntityObject

Properties​

columnName?​

optional columnName?: string;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:36

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

Inherited from​

IEntityObject.columnName

displayName?​

optional displayName?: string;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:42

显示名称

Example​

"用户", "订单项"

Inherited from​

IEntityObject.displayName

encrypted?​

optional encrypted?: boolean;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:83

是否为加密列(透明字段级加密)

由 @aiao/rxdb-adapter-encrypted 在写入前用 AES-GCM-256 加密、 读取后透明解密。加密列不能同时是: 主键 / 外键 / 唯一 / 可排序 / 索引 / 计算属性 / FTS 列。

Default​

false

Inherited from​

IEntityObject.encrypted

name​

name: Uncapitalize<string>;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:30

名字 非大写开头的英文单词,只能包含英文单词和下划线

Inherited from​

IEntityObject.name

normalized?​

optional normalized?: boolean;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:531

归一化唯一索引:索引的每一列都以 lower(COALESCE(CAST(列 AS TEXT), '')) 参与比较。

Remarks​

只对 unique: true 有意义,单独出现会在建元数据时抛错(不做静默降级)。

解决两件事:

  1. NULL 让唯一索引整条失效。 SQL 规定每个 NULL 互不相等, 因此 (parentId, name, extension) 上的普通 UNIQUE 对「根节点」(parentId IS NULL) 和「文件夹」(extension IS NULL)一行都拦不住。COALESCE(…, '') 把 NULL 折成一个真实值后,元组才重新可比。
  2. 大小写变体绕过重名校验。 树形 UI 的同级重名判定普遍是 a.toLowerCase() === b.toLowerCase();数据库若区分大小写,UI 拦下的重名 换个大小写就能从 repository 直写进去。lower() 让两侧同口径。

索引仍是多列元组,不是拼接成一个字符串 —— ('a', 'bc') 与 ('ab', 'c') 不冲突。

Example​

indexes: [
`{ name: 'parent_fullname', properties: ['parentId', 'name', 'extension'], unique: true, normalized: true }`
]

Default Value​

false


nullable?​

optional nullable?: boolean;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:63

是否可以为 NULL

Default​

false

Inherited from​

IEntityObject.nullable

properties?​

optional properties?: string[];

Defined in: packages/rxdb/src/entity/property-types.interface.ts:503


readonly?​

optional readonly?: boolean;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:57

是否为只读 如果为 true 那么这个数据只有创建的时候写一次,在更新数据时,这个列的值不会被更新 如果为 false 那么在更新数据时这个列的值会被更新

Default​

false

Inherited from​

IEntityObject.readonly

required?​

optional required?: boolean;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:72

是否为必填 用于前端验证 如果为 true 那么在创建数据时这个列必须提供值 空字符串,空数组都不允许,数字 0 允许

Default​

false

Inherited from​

IEntityObject.required

unique?​

optional unique?: boolean;

Defined in: packages/rxdb/src/entity/property-types.interface.ts:49

是否唯一 如果为 true 那么这个数据得值不允许重复

Default​

false

Inherited from​

IEntityObject.unique