2013-07-31 60 views
0

我們正在創建一個應用程序,大部分時間都將在離線狀態下使用。我們要做的是從我們的實時數據庫中創建一些表格的副本,並定期將該數據庫複製到PhoneGap應用程序(永遠不會從PhoneGap推送到現場)。如何在PhoneGap上創建脫機使用的mysql數據庫副本?

我可以在第一次運行應用程序(用戶將在辦公室訪問他們的WiFi)時爲PhoneGap插入一條記錄,然後系統地確定Live DB上的哪些記錄自上次'同步「並更新PhoneGap應用程序中的這些記錄,但如果我可以對文件執行更強大的實時數據庫轉儲並替換本地PhoneGap副本,那將會很棒?

回答

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 

我在幾個應用程序中使用該方法。我通過數據庫選擇了它,因爲它更易於實施和維護。

+0

json中的所有數據肯定會大於5MB。每個文件/對象的限制總計是5MB還是5MB? – SomethingOn

+1

5MB是可以保存在本地存儲上的最大數據大小。但AFAIK你也有限的網絡SQL,5MB的iOS(可以擴展到10,如果用戶授權)和12MB的Android如果我記得沒錯。需要搜索以確保雖然。當我回家時我會盡力找到一些東西。但是,如果你需要的不僅僅是這些,我相信你將不得不本土化。 – caiocpricci2

+0

感謝caiocpricci2,我實際上希望使用PG-SQLite插件https://github.com/pgsqlite/PG-SQLitePlugin-iOS,但我無法使插件與我的項目一起工作:s – SomethingOn

相關問題