我正在使用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 */
}
问题是当应用程序启动时没有表,所以控制器中的函数甚至都不会执行。
此外,我无法找到如何处理回调,如
任何人都可以帮助我做一些最好的做法。
任何帮助都将是一个很好的支持。 提前谢谢。