如何在PhoneGap上创建一个mysql数据库副本以供离线使用?

时间:2013-07-31 15:46:20

标签: cordova web-sql

我们正在创建一个大部分时间都将脱机使用的应用。我们要做的是从我们的实时数据库创建一些表的副本,并定期将该数据库复制到PhoneGap应用程序(永远不要从PhoneGap推送到现场)。

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

1 个答案:

答案 0 :(得分:1)

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

当您的应用程序发出数据请求时,请最后一次使用时间戳将其全部返回,并使用它来巧妙地仅返回更新的数据。像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

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