Google drive api GoogleDrive实时API:在分层数据模型中进行原子更新,同时保持排序顺序

Google drive api GoogleDrive实时API:在分层数据模型中进行原子更新,同时保持排序顺序,google-drive-api,Google Drive Api,我正计划使用Google Drive实时API构建一个todo应用程序。它将具有层次结构,因此任务可以有子任务,子任务可以有子任务,等等。任务可以自由移动,这意味着它在兄弟姐妹之间的位置/索引可以更改,但也可以将其移动到另一个父级 现在我知道,在使用实时API时,您必须注意使这些移动原子化。在一段视频中,谷歌工程师解释说,实现这一点的最佳方法是对层次模型进行平面表示:每个项/任务都有一个指向其父项的属性。这样,将任务移动到另一个父级只需要一个操作:更改父级属性(而不是将其从一个父级的子列表中删除

我正计划使用Google Drive实时API构建一个todo应用程序。它将具有层次结构,因此任务可以有子任务,子任务可以有子任务,等等。任务可以自由移动,这意味着它在兄弟姐妹之间的位置/索引可以更改,但也可以将其移动到另一个父级

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

这可以很好地用于我的项目,但我还需要在父任务中维护子任务的顺序。当一个任务只知道它的父任务时,我怎么做?
非常感谢,鲁本

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

危险在于,由于比赛条件,你最终得到的任务没有列在任何其他任务的子任务列表中,但我认为这不可能发生

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