跳到主要内容

classifyWriteEntrance()

function classifyWriteEntrance(request): WriteEntranceDecision;

Defined in: packages/rxdb-plugin-working-tree/src/working-tree/write-entry-matrix.ts:304

判定一次写该不该落成工作树单元

Parameters​

ParameterTypeDescription
requestWriteEntranceRequest谁在写、写哪一类表、写了哪些列

Returns​

WriteEntranceDecision

三种结论之一;总函数,任何组合都有结论,从不抛错

Remarks​

顺序是契约的一部分:

  1. 能力位最先,先于入口许可。 FR-046 要的是零行为差异——没启用提交能力的库上,raw 写、 未知入口、notifyExternalUpdate() 都必须与没装这个特性时逐字节一致。放在入口许可之后 判断的话,未启用的库会开始拒绝它一直允许的写法:升级即故障,故障点在完全没打算用这个 功能的用户那里。
  2. 再按目标类短路。 系统表与 QueryCache 表上没有需要保护的东西,于是「谁在写」这个问题 只在版本化业务表上才需要回答。反过来(先按入口分派)要求每个入口分支各自再判一次目标类, 十一个分支就有十一次抄写机会。

判定是纯的:不读全局状态、不改入参,同一份输入判两次结论相同。

Example​

classifyWriteEntrance({
entrance: 'remote_entity_apply',
targetClass: 'versioned',
operation: 'update',
columns: { kind: 'columns', names: ['remoteId'] },
untrackedFields: domain.untrackedFieldsOf('post'),
capabilityEnabled: true
});
// → `{ kind: 'no_capture', reason: 'no_net_change', revisionBump: false }`