2015-09-04 58 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