我们正在创建一个大部分时间都将脱机使用的应用。我们要做的是从我们的实时数据库创建一些表的副本,并定期将该数据库复制到PhoneGap应用程序(永远不要从PhoneGap推送到现场)。
我可以在第一次运行应用程序时运行PhoneGap中的每个记录(用户可以在办公室中访问其WiFi),然后系统地确定自上次'同步以来Live DB上的哪些记录已更新'并在PhoneGap应用程序中更新这些记录,但如果我可以对文件进行更强力的实时数据库转储并替换本地PhoneGap副本,那将会很棒吗?
答案 0 :(得分:1)
不知道您需要在本地存储多少数据,但如果您可以将其限制为5mb,则可以使用json
和localStorage
而不是本地数据库。
当您的应用程序发出数据请求时,请最后一次使用时间戳将其全部返回,并使用它来巧妙地仅返回更新的数据。像yourhost.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
我在几个应用程序中使用了这种方法。我在数据库中选择了它,因为它更容易实现和维护。