跳到主要内容

ConflictResolver

Defined in: packages/rxdb/src/sync-contract/conflict.ts:72

冲突解决器接口

可自定义实现。注意运行时能自动应用的解决结果只有 KEEP_LOCAL 与 KEEP_REMOTE, 返回 MERGE / DEFER 会让本轮拉取整体回滚,详见 ConflictResolution。

通过 PullOptions.conflictResolver 或 PullRepositoryOptions.conflictResolver 传入;不传则用 LWWConflictResolver。

Example​

交互式选择(返回值仍须落在两种可应用结果上)

class MyResolver implements ConflictResolver {
async resolve(conflict: Conflict): Promise<ConflictResolution> {
const keepLocal = await showConflictDialog(conflict);
return { type: keepLocal ? 'KEEP_LOCAL' : 'KEEP_REMOTE' };
}
}

Methods​

resolve()​

resolve(conflict): Promise<ConflictResolution>;

Defined in: packages/rxdb/src/sync-contract/conflict.ts:79

解决单个冲突

Parameters​

ParameterTypeDescription
conflictConflict冲突信息

Returns​

Promise<ConflictResolution>

冲突解决结果


resolveAll()?​

optional resolveAll(conflicts): Promise<ConflictResolution[]>;

Defined in: packages/rxdb/src/sync-contract/conflict.ts:89

批量解决冲突(可选优化)

默认实现会逐个调用 resolve()

Parameters​

ParameterTypeDescription
conflictsConflict[]冲突列表

Returns​

Promise<ConflictResolution[]>

解决结果列表