使用WEB_SQL进行离线应用程序

时间:2016-04-28 07:25:42

标签: angularjs web-sql

我正在使用WEB-SQL和angularJS

进行离线应用程序

我面临很多问题,我无法通过适当的解决方案来解决 当应用程序启动时,我如何知道我需要创建数据库,因为应用程序首次启动或浏览器已重置。  解决这个我正在做的事情

'use strict';
angular.module('Services')
.service('LocalDb', function($q){
var db = openDatabase('LocalDb', '1.0', 'Local database', 100 * 1024 * 1024);
return {
    getData : function(condition){
        var defer = $q.defer();
        if(condition == null)
            var query = "select * from TABLENAME";
        else
            var query = "select * from TABLENAME where COLUMNNAME ='" + condition + "'";
        db.transaction(function(tx){
            tx.executeSql(query, [], success, failure);
        });
        function success(tx, results){
            defer.resolve(results.rows.item(0));
        };
        function failure(tx, err){
            defer.reject(err.message);
        }
        return defer.promise;
    }
  }
});

这是我的控制器在应用程序引导时运行,如果找不到数据,我将获取数据然后我调用API从服务器加载数据: 我知道我没有正确处理数据库,因为我无法找到管理web-sql API的最佳实践这是我的第一个离线项目。

try{
    var Template = LocalDb.getData('a71391ea11e5f4e2bb1ec0cecdec5c69').then(function(response){
        if(response){
            scope.baseObject = JSON.parse(response.baseTemplateObject);
        }
        else{
            callApi = true;
        }
    });    
}
catch(err){
    console.log(err.message);
    callApi = true;
}
if(callApi) {
    /*calling api and creating data base then creating table and then inserting response data into table */ 
}

问题是当应用程序启动时没有表,所以控制器中的函数甚至都不会执行。

此外,我无法找到如何处理回调,如

  • 表未找到错误
  • 未找到数据错误
  • 找不到数据库错误
  • 也是对websql的异步调用也造成了一些问题。

任何人都可以帮助我做一些最好的做法。

任何帮助都将是一个很好的支持。 提前谢谢。

0 个答案:

没有答案