0

我们正在创建一个大部分时间都可以离线使用的应用程序。我们要做的是从我们的实时数据库中创建几个表的副本,并定期将该数据库复制到 PhoneGap 应用程序(从不从 PhoneGap 推送到实时)。

我可以在应用程序第一次运行时在 PhoneGap 中插入每条记录(用户将在办公室访问他们的 WiFi),然后系统地确定 Live DB 上的哪些记录自上次“同步”和更新以来已更新PhoneGap 应用程序中的这些记录,但如果我可以将实时数据库更暴力地转储到文件并替换本地 PhoneGap 副本,那会很棒?

4

1 回答 1

1

不知道您需要在本地存储多少数据,但如果您可以将其限制为 5mb,则可以使用jsonlocalStorage不是本地数据库。

当您的应用程序请求数据时,一次返回所有数据,最后带有时间戳,并使用它巧妙地仅返回更新的数据。调用 likeyourhost.com/retrieveData将返回所有数据并yourhost.com/retrieveData/timestampParam仅返回时间戳后更新的数据。

返回类似:

{ "table1" : [{"col1":"data1","col2":"data2"},{"col1":"data3","col2":"data4"}],
  "table2" : [{"col3":"data5","col4":"data6"},{"col3":"data5","col4":"data6"}], 
  "timestamp" : 1234567 } //this should be optimized for your needs, it's just a generic example.

当应用程序启动时,在执行任何其他操作之前,您将确保您的应用程序始终是最新的:

Check if the data is stored
    If there isn't, or if the user is online or if the timestamp is too old, or you can perform any check you might need here
       Retrieve the data again using the stored timestamp
       Update the local data
       Store the timestamp returned
    If none of the above applies, the app is good to run

我在几个应用程序中使用了这种方法。我选择它而不是数据库是因为它更易于实现和维护。

于 2013-07-31T16:41:39.263 回答