跳到主要内容

assertCommitUnitsEncryptedAtRest()

function assertCommitUnitsEncryptedAtRest(context, units): void;

Defined in: packages/rxdb-plugin-working-tree/src/commit/commit-codec.ts:228

校验一批变更单元的加密列都已处于落库形态(FR-038)。

Parameters​

ParameterTypeDescription
contextCommitPatchCodecContext元数据解析与 at-rest 判定上下文
unitsreadonly CommitChangeUnitContent[]待提交的变更单元,按写入顺序;baseline 提交传空数组

Returns​

void

Throws​

CommitEncryptedAtRestError 某个加密列的值不是落库形态,或没有判定器可判

Throws​

UnknownWorkingTreePatchEntityError 某个单元的目标实体未在本进程注册

Remarks​

必须在算 contentFingerprint 之前调用,理由见本文件 fileoverview「调用顺序」。

只看 metadata.encryptedPropertyMap 里的那些键:非加密列里的明文本来就该是明文, 把它们也拖进判定只会让调用方为了过检查去加密不需要加密的列。

目标实体解析不到时抛,与 encodeWorkingTreePatch 同一口径——这条路径只在写入侧跑, 而写入的前提就是实体已注册;原样放行等于「查不到就不查」,正是 fail-open。

baseline 提交(kind: 'baseline')不带任何变更单元,因此没有加密暴露面; 传空数组是 no-op,也不需要判定器。将来若有人想「顺手给 baseline 存一份实体快照」, 会先在这里撞上——那份快照必须同样受本断言约束。