2

我计划使用 Google Drive Realtime API 构建一个待办事项应用程序。它将具有层次结构,因此任务可以有子任务,子任务可以有子任务等。任务可以自由移动,这意味着它的兄弟姐妹之间的位置/索引可以改变,但也可以移动它给另一个父母。

现在我知道你在使用 Realtime API 时必须注意使这些动作原子化。在一段视频中,谷歌工程师解释说,做到这一点的最佳方法是对分层模型进行平面表示:每个项目/任务都有一个指向其父项的属性。这样,将任务移动到另一个父级只需要一个操作:更改父级属性(而不是将其从一个父级的子列表中删除并将其添加到新父级的子列表中:两个操作> 不是原子的)。

这对我的项目可以正常工作,除了我还需要维护父任务中子任务的顺序。当任务只知道它的父级时,我该怎么做?非常感谢,鲁本

4

1 回答 1

0

我认为这应该可行:按照建议让每个任务指向其父任务。此外,让每个任务保留其子任务的排序列表。然后,当您向用户显示子任务列表时,过滤掉那些不指向正确父任务的任务。您偶尔会在多个父母下执行相同的任务,但用户永远不会看到它。

危险在于,由于竞争条件,您最终拥有的任务未列在任何其他任务的子任务列表中,但我认为这不可能发生。

另一种方法是让每个任务存储一个“排序顺序”值,这是一个实数。UI 在显示之前对它们进行排序。如果两个用户在同一个位置添加任务,他们就有可能获得相同的值,但这并不重要,因为在这种情况下两个任务的顺序没有得到很好的定义。

于 2014-09-10T23:30:04.923 回答