跳到主要内容

VersionedDomainView

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/versioned-domain.ts:112

版本化域在表 / 列平面上的投影,也就是 raw 写判定消费的那个端口

Remarks​

成员刻意只有两个:raw 判定拿到的是一条 SQL,它认得的只有表名和列名,不认得实体名, 更不认得「QueryCache」这个概念——它只看表在不在集合里。端口开宽了,判定就会开始按实体 语义分支,于是同一件事在实体平面与表平面各有一套判据。

Extended by​

Properties​

versionedTables​

readonly versionedTables: ReadonlySet<string>;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/versioned-domain.ts:130

全部 tracked 实体的可寻址表名集合,小写、无引号、无点号 schema 限定

Remarks​

放实体名的话,UPDATE post 永远命不中 Post,整条 raw 防线静默失效。

名字来自适配器(VersionedDomainEntityInput.physicalTableNames),一张表通常有两个: 逻辑表名(post)与 SQLite 家族折叠命名空间之后的物理表名(public$post)。两个都要, 因为 6 个 v1 后端分两种物理形态——PGlite 有真 schema,表引用是 "public"."post",判定切掉 点号限定之后回到 post;另外 5 个 SQLite 家族后端没有 schema,命名空间被折进名字本身, 而那是它们唯一能用的表名。只登记逻辑名的话,raw 门禁在 5/6 的后端上整条失效:用户用后端 唯一可用的表名就能把版本化业务表写穿,捕获链一无所知,冷重放从此对不上。

登记别名而不是让判定按 $ 切一刀:_fts_public$post(rxdb-plugin-search 的影子表, spec.md 明列的域外目标)切完正好等于 post,于是一条本该放行的写开始报错。 判定那一侧继续只做集合成员判定,多一种物理形态由写表的那个适配器多报一个名字。

Methods​

untrackedFieldsOf()​

untrackedFieldsOf(table): ReadonlySet<string>;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/versioned-domain.ts:138

取某张表上不构成业务净变化的列集合

Parameters​

ParameterTypeDescription
tablestring表名;大小写不敏感

Returns​

ReadonlySet<string>

该表的全域簿记字段 ∪ 它自己登记的派生索引列