gpt4 book ai didi

javascript - 如何将笔记的多个修订合并为一个版本?

转载 作者:可可西里 更新时间:2023-11-01 09:32:48 24 4
gpt4 key购买 nike

如果以前有人问过这个问题,请原谅。我敢肯定它已经成为一个经典问题。但是,尽管如此,我还是会问,因为我找不到解决方案。

  • 我有一个用于笔记应用程序的 mongo/mongoose/node 堆栈 API。
  • 该应用的用户可以在不同的设备或浏览器选项卡中打开它,有时最终会覆盖他们自己的笔记。

这是一个使用不同媒体的单个用户遇到问题的时间线性示例:

  1. 用户在手机中打开应用(离线)
  2. 稍后,用户打开应用在浏览器中编辑特定的笔记。
  3. 用户返回手机中的应用程序并编辑同一条笔记。现在是电话应用程序。覆盖 #2 中所做的编辑,因为手机“不同步”。

主要有两个问题:
1.应用程序不启动同步。它保持不同步,除非用户手动点击刷新。
2. 两个笔记的合并比较难,因为不像最后一个是权威的那么简单,而是,我认为它需要优雅地将两者合并在一起(想想github diff)

处理此类问题的已知策略是什么?我最初的研究指向 jsdiff 之类的东西,它突出了差异,但没有考虑与 mongoose 的同步和修订解决方案。

TLDR;我有多个笔记。我需要合并它们。它们可能会有所不同。

最佳答案

我过去不得不处理类似的问题(同步离线事件)。这是我们所做的一般性工作,希望对您有所帮助。

  1. The app does not initiate a sync

您想尽量减少同步问题可能出现的时间范围。

这可以通过触发同步观察navigator.online的状态来解决。 .1.当它变为false时,开始缓冲用户编辑。2. 当它变为 true 时,从服务器拉取新的更改,然后推送缓冲的操作。

  1. Merging of the two notes...

这可能非常具有挑战性。这实际上取决于数据的类型,以及您对同步错误的容忍度。

我们发现最好在尽可能靠近源的地方处理同步问题。我们在客户端解决了同步问题,因此损坏的数据永远不会到达数据库。

同步本身的行为类似于 git 合并。

当离线设备提取更新的数据时,它会尝试合并缓冲的操作,然后将其发送到服务器。

  • 如果检测到冲突,它会尝试自动更正。为每个操作添加时间戳可能有助于对来自多个设备的操作顺序进行排序。
  • 如果自动更正失败,会提示用户手动解决。

希望对你有帮助。

关于javascript - 如何将笔记的多个修订合并为一个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com