簡體   English   中英

Cordova和PouchDB的離線數據

[英]Offline data with Cordova and PouchDB

我正在用Cordova編寫字典應用程序。 數據大小約為20MB。

我希望該應用程序完全脫機工作,並在本地查詢數據。 而且我發現PouchDB非常適合那個。

但是,我也希望將所有數據與JSON應用一起預安裝。 也就是說,將所有數據放入應用程序包中(在Cordova項目的www / data文件夾中)。

到目前為止,據我所知,PouchDB可以從服務器創建數據或同步數據,但是我想知道它如何利用應用程序www文件夾中的數據文件。

而且,我該如何格式化數據文件,以便PouchDB可以直接從中查詢 ,而不必先讀取文件然后將數據插入PouchDB中。

有人有什么想法嗎? 還是其他可以完成此操作的JS庫?

謝謝!

經過研究后,我現在想比較一些可能的選擇:

  1. 直接使用PouchDB

    這是不切實際的,因為:1)您必須在第一次啟動時將數據插入PouchDB,這可能會非常慢。 2)內存使用率很高,因為您將首先將所有數據加載到內存中(除非將它們拆分); 3)Cordova應用程序不能在后台運行; 用戶可以在插入數據時退出應用程序。

  2. PouchDB的sqlite插件

    一個可能的解決方案。 您需要使用文件傳輸插件將數據復制到“工作文件夾”中。

    缺點:

    • 有點麻煩,因為您需要另一個工作流程來創建sqlite文件。
    • PouchDB的sqlite適配器不能通過所有測試套件,並且可能會像官方文檔所建議的那樣變慢。
    • 額外空間使用量(2x); 必須將應用程序包中的數據復制到data文件夾中,以便Sqlite使用。
  3. 將數據拆分為應用程序包內的較小json文件(在/ www文件夾中)

    這是我目前使用的。 我將數據分割成大約100個較小的.json文件,並將它們放在/ www文件夾中。 然后,我可以使用XHR請求根據查詢動態加載它們。

    優點:

    • 不需要額外的空間; 僅一份數據

    缺點:

    • 失去PouchDB的所有功能及其查詢方法; 它基本上是在實現自定義只讀數據庫。
  4. 洛基斯

    Lokijs是一個高性能的內存數據庫。 它可以從JSON加載數據庫,或者(使用非官方插件 )從Filesystem加載數據庫。

    缺點:

    • 因為Lokijs是內存數據庫。 內存使用可能是大數據量和移動設備上的問題。

值得期待的另一件事是用於PouchDB的文件系統適配器。 至少有人在考慮它: https : //github.com/pouchdb/pouchdb/issues/4631


預加載數據時出現的問題:

預加載數據通常意味着將數據從應用程序包內部復制到操作系統提供的數據目錄(具體取決於平台)。

通常會使用Cordova的File插件和File Transfer插件。 當前,文件插件無法訪問應用包中的數據(盡管appDirectory在插件中定義)。 您必須使用文件傳輸插件將數據文件從應用程序包復制到數據文件夾。

https://pouchdb.com/2016/04/28/prebuilt-databases-with-pouchdb.html逐步介紹了如何在應用程序中包含預建數據。 您可以使用sqlite數據庫文件或原始文本文件。

http://pouchdb.com/adapters.html專門查看sqlite插件。 您可以找到生成的sqlite數據庫並將其分發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM