跳到主要内容

assertSwitchBranchPreconditions()

function assertSwitchBranchPreconditions(executor, options?): Promise<void>;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/switch-branch-options.ts:85

校验调用方显式提出的那些前置条件(FR-017、FR-020)。

Parameters​

ParameterTypeDescription
executorTransactionExecutor调用方那个只读事务的执行器
options?RxDBBranchSwitchPreconditions调用方提出的前置条件;不传即不表态

Returns​

Promise<void>

Throws​

WorkingTreeDirtyError requireClean: true 且当前分支非空时

Throws​

StaleActiveBranchError expectedActivationRevision 与库里的对不上时

Remarks​

没提出任何条件时一条语句都不发。 不是「读了再忽略」:那次读会被加进每一次切换的成本, 而读回来的东西迟早会被「顺手」用上——那一步没有任何测试拦得住。

requireClean: false 与不传是同一件事。反过来把「字段存在」当成「要检查」 (options.requireClean !== undefined 之类)的话,显式关闭反而打开了检查。

clean 的判据只取 WorkingTreeState.entryCount 这一列,不扫条目表:扫表既丢掉 SC-001 要的 常数时间,也让判据与 status().clean 从此可以漂移——漂移的那天,摘要说干净、切换说脏, 用户没有任何出路。