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 有意义,单独出现会在建元数据时抛错(不做静默降级)。
解决两件事:
- NULL 让唯一索引整条失效。 SQL 规定每个 NULL 互不相等,
因此
(parentId, name, extension)上的普通 UNIQUE 对「根节点」(parentId IS NULL) 和「文件夹」(extension IS NULL)一行都拦不住。COALESCE(…, '')把 NULL 折成一个真实值后,元组才重新可比。 - 大小写变体绕过重名校验。 树形 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