2013-07-16 22 views
1

场景:谷歌实时API - 何时坚持更改数据库?

  • 我有多个浏览器客户端,其互联网连接的速度非常快,以超慢变化。因为这样他们可能看不到文档的相同状态。

  • 我使用的是Google shortcut file,因为文档实际上是存储在数据库中的。

  • 将文档保存到数据库是从客户端触发的。

问题:我怎么知道哪个客户端获得了最新的应该保存到数据库的最新文档?

回答

2

你是对的,你不能依赖任何特定的客户在某个特定的时间是最新的。没有简单的方法可以确定,因为这可以在任何特定时刻改变。 (虽然可以确保你不要看document save state在一个特定的客户端的任何未保存的更改。)

而不是试图做到这一点基于客户端的状态,您可以使用export capability是的一部分Drive API,它将为您提供有修改号码的数据的有效快照,以便您可以跟踪您拥有的版本。

请注意,这是一个全新的功能,所以它还没有很好的记录。响应是一个带有appId,修订号的json对象,以及包含该文档的json版本的数据字段。它看起来像这样,对于在根中具有协作列表“列表”和协作字符串“文本”的文档:

{"appId":"788242802491","revision":17, 
"data":{"id":"root","type":"Map", 
    "value":{ 
    "list":{"id":"gde9s8z5khjarls7o","type":"List","value":[]}, 
    "text":{"id":"gdef98qdhiq679af","type":"EditableString","value":"This is a test 2."}}}} 
+0

有效快照来自哪里?由于我正在使用快捷方式文件,因此没有数据存储在中央位置(服务器)中,对吗? –

+0

实时数据模型始终存储在服务器上。这对于(除其他之外)用户能够稍后回来查看它是必要的。使用快捷方式文件意味着除了实时数据模型本身之外,您不会再存储任何额外的二进制数据。 (如果你想更好地理解这一切是如何工作的,你可能想看看我们在Google I/O http://www.youtube.com/watch?v=hv14PTbkIs0) –

+0

的幕后谈话。我想还有另一个问题,我想存储这些快捷方式文件多长时间?我假设我不希望他们永远在一起,所以在最后一个用户存在实时会话后,我会删除它们吗? http://stackoverflow.com/questions/17579739/google-realtime-api-creating-and-removing-shortcut-file-in-google-drive –