跳到主要内容

registerSystemEntities()

function registerSystemEntities(entities): void;

Defined in: packages/rxdb/src/system/system-entities.ts:85

登记插件贡献的系统表

Parameters​

ParameterTypeDescription
entitiesreadonly EntityType[]插件的系统实体类,顺序即建表顺序

Returns​

void

Remarks​

系统表身份是「实体类」的属性,不是「某个数据库」的属性,所以登记簿是模块级、只增不减的。 这正是 isSystemEntity 得以保持纯函数签名的原因——它有跨包消费者 (RxDBAdapterHttp 拿它决定同步行为),改成按实例取会波及包外调用点。

多实例不会互相污染,但那不是这个函数保证的:保证来自建表那一侧按实例算 (RxDB.systemEntities = CORE_SYSTEM_ENTITIES + 本实例 use() 过的贡献)。 登记簿只被「这个类是不是系统表」这类判定读,多认几个身份对没装该插件的库没有行为差异—— 那些类根本进不了它的 config.entities。

按身份幂等:同一张表重复登记是空操作,因此 disconnect() → connect() 重装插件不会让 登记簿无限增长(与 SchemaManager.init 逐张判定同一个理由)。

必须在 connect() 之前调用。建表引导只读一次登记簿,之后再登记的表不会被建出来。