イオン フレームワークと角度のある js と ngCordova に基づいて、モバイル ハイブリッド アプリを開発しています。そして、私はそれに慣れていません。データベースを操作するために SQLite プラグインを使用しています。
次のコードがあります
service.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;
})
controllers.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);
意図した値が得られるため、クエリは問題なく実行されます。
私が間違っているところで、誰かが私を助けてくれます。ありがとう