跳到主要内容

SyncBranchesResult

Defined in: rxdb-plugin-sync/src/sync-branches.ts:19

SyncManager.syncBranches 一轮的结果。

Remarks​

created + updated + skipped.length 不一定等于 total:本地已有、且早已标了 remote 的 分支既不计 updated,也不进 skipped。

Properties​

created​

created: number;

Defined in: rxdb-plugin-sync/src/sync-branches.ts:21

本轮在本地新建的远端分支数。


skipped​

skipped: string[];

Defined in: rxdb-plugin-sync/src/sync-branches.ts:43

本轮未创建的远端分支 id —— 具体原因见同一个 id 在 skipReasons 里的条目。

一条分支被跳过,可能是它自己的问题(id 不可用、或分叉点变更还没拉到本地翻译不出本地 id),也可能单纯因为它的父本轮被跳过——后一种情形下这条分支自身完全合格,但父本轮 不会落库,若仍然照常创建,它的 parentId 就是一条指向「本轮不存在的父」的悬空外键 (rxdb_branch.parentId 是 PRAGMA defer_foreign_keys 延迟到 COMMIT 才检查的外键, 届时会回滚整个事务,连同本轮所有本该成功的分支)。三种成因统一走同一条 skipped 通道,因为对调用方而言处理方式是一样的:这个 id 本轮没有对应的本地分支,仅此而已。

跳过不留持久标记:每轮都全量重拉远端分支、从头再判一遍,skipped 与 skipReasons 只报这一轮。unresolved-from-change-id 在分叉点变更拉到本地后自愈, 挂在它下面的 ancestor-skipped 随之自愈;invalid-id 则远端不改就每轮重拉、重跳, 一直占位——调用方要区分这两类,看 skipReasons。要不要记一个持久的「已知坏行」 标记,登记在 requirements/roadmap.md「epic-006 评审顺延的架构项」。


skipReasons​

skipReasons: Record<string, SyncBranchSkipReason>;

Defined in: rxdb-plugin-sync/src/sync-branches.ts:52

skipped 里每一个 id 对应的具体跳过原因;key 覆盖 skipped 的每一项,一一对应。

单开一个字段而不是把原因塞进 skipped 数组本身:skipped: string[] 这个形状已经被 外部当「id 列表」消费,改成对象数组是破坏性变更;Record<id, reason> 是纯增量, 只读 skipped 的既有调用方不受影响。


total​

total: number;

Defined in: rxdb-plugin-sync/src/sync-branches.ts:25

远端本轮交回的分支总数,含被跳过的。


updated​

updated: number;

Defined in: rxdb-plugin-sync/src/sync-branches.ts:23

本地已有、本轮补上 remote: true 标记的分支数。