我正在开发基于 ionic 框架和 angular js 和 ngCordova 的移动混合应用程序。我是新手。我正在使用 SQLite 插件来操作数据库。
我有以下代码
服务.js
angular.module('imrapp.services', ['imrapp.config'])
.factory('DB', function(DB_CONFIG, $cordovaSQLite) {
var self = this;
self.db = null;
self.firstRunTest = function() {
if (window.cordova) {
self.db = cordovaSQLite.openDB({
name: DB_CONFIG.name
}); //device
} else {
self.db = window.openDatabase(DB_CONFIG.name, '1.0', 'database', -1); // browser
}
return $cordovaSQLite.execute(self.db, 'SELECT name FROM sqlite_master WHERE type=(?) AND name=(?)', ['table', 'sync_table'])
.then(function(result) {
if (result.rows.length > 0) {
console.log(result.rows.item(0).name);
return result.rows.item(0).name;
} else {
return "No results found";
}
}, function(err) {
alert(err);
console.error(err);
});
}
return self;
})
控制器.js
angular.module('imrapp.controllers', [])
.controller('LoginCtrl', function($scope, DB) { //AuthInterceptor,
$scope.data = {};
$scope.login = function() {
var firstRun = DB.firstRunTest();
console.warn("IS FIRST RUN 2 = " + JSON.stringify(firstRun));
}
});
当我打电话时DB.firstRunTest
,来自控制器。预期的回报是的价值,result.rows.item(0).name
但它返回对象 {"$$state":{"status":0}}
。
查询运行得非常好,因为在 DB.firstRunTest() 方法中,
console.log(result.rows.item(0).name);
给出了预期的值。
任何人都可以帮助我解决这个问题,我哪里出错了。谢谢