2015-09-04 56 views
0

剛剛對混合應用程序開發,我使用科爾多瓦v5,Ionic和PouchDB爲我的應用程序。似乎在Ionic serve命令中一切正常,但對PouchDB的任何操作似乎都不適用於運行Android Lollipop的實際設備。PouchDB混合科爾多瓦應用程序不工作

在創建pouchDB對象時,我明確指定了'WebSQL'。我不知道我是否錯過了任何步驟。

下面是代碼

var houselst = JSON.parse('<some json string>'); 

new PouchDB('SH_HouseVisitDB', { adapter: 'websql' }).destroy().then(function() { 
      return new PouchDB('SH_HouseVisitDB'); 
     }).then(function (db) { 

     var doc = { 
        "_id": "houselist", 
        "items": houselst 
       }; 

       //insert the doc to pouchDB 
       db.put(doc); 
       db.get('houselist').then(function (doc) { 
        vm.houselist = _.sortBy(doc.items, "name"); 
        db.close(); 
       }); 
} 

任何幫助將不勝感激。

+0

沒有閱讀過http://pouchdb.com/adapters.html SQLite的插件段落? (db.info()。)然後(function(info){alert(info);});'?你真的需要使用插件嗎(參見文檔)? – thriqon

+0

你好thriqon,謝謝你的幫助。當我運行離子服務命令我得到的信息對象如下信息:對象 auto_compaction:假 DB_NAME: 「SH_HouseVisitDB」 doc_count:0 sqlite_plugin:假 update_seq:0 websql_encoding: 「UTF-8」 __proto__:對象 – Shan

回答

0

一般不建議您嘗試使用new PouchDB(...)作爲自己的承諾(例如new PouchDB(...).then(...))。由於循環依賴關係,它會導致某些Promise環境中的問題,這是一種我們正在遠離的舊式風格。嘗試做var db = new PouchDB(...);,看看是否有幫助!

+0

你好諾蘭,我改變了你提到的代碼。看起來像我錯過了一些重要的一步。 db.info顯示sqlite_plugin:false :-(。 – Shan

+0

你也可以通過刪除'adapter:'websql''來試用IndexedDB適配器,還想知道是否有錯誤?你可以通過附加'.catch( console.log.bind(console))''你也不需要棒棒糖上的sqlite_plugin來讓PouchDB工作;事實上,沒有它,它的工作更加一致。 – nlawson