作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果以前有人问过这个问题,请原谅。我敢肯定它已经成为一个经典问题。但是,尽管如此,我还是会问,因为我找不到解决方案。
这是一个使用不同媒体的单个用户遇到问题的时间线性示例:
主要有两个问题:
1.应用程序不启动同步。它保持不同步,除非用户手动点击刷新。
2. 两个笔记的合并比较难,因为不像最后一个是权威的那么简单,而是,我认为它需要优雅地将两者合并在一起(想想github diff)
处理此类问题的已知策略是什么?我最初的研究指向 jsdiff 之类的东西,它突出了差异,但没有考虑与 mongoose 的同步和修订解决方案。
TLDR;我有多个笔记。我需要合并它们。它们可能会有所不同。
最佳答案
我过去不得不处理类似的问题(同步离线事件)。这是我们所做的一般性工作,希望对您有所帮助。
- The app does not initiate a sync
您想尽量减少同步问题可能出现的时间范围。
这可以通过触发同步观察navigator.online的状态来解决。 .1.当它变为false时,开始缓冲用户编辑。2. 当它变为 true 时,从服务器拉取新的更改,然后推送缓冲的操作。
- Merging of the two notes...
这可能非常具有挑战性。这实际上取决于数据的类型,以及您对同步错误的容忍度。
我们发现最好在尽可能靠近源的地方处理同步问题。我们在客户端解决了同步问题,因此损坏的数据永远不会到达数据库。
同步本身的行为类似于 git 合并。
当离线设备提取更新的数据时,它会尝试合并缓冲的操作,然后将其发送到服务器。
希望对你有帮助。
关于javascript - 如何将笔记的多个修订合并为一个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969669/
我是一名优秀的程序员,十分优秀!