1
したがって、dbと返信データを照会するファクトリを作成しました。メソッドの中で、私はコンソールに印刷することができます。しかし、コントローラ内部からの戻りデータをチェックすると、それは空です。以下のコードを見て、あなたが助けることができるかどうかを見てください。ここで工場からコントローラにSQLデータが戻ってこない
は工場
rs.factory("userService",function($http,$ionicLoading,$cordovaProgress,$cordovaSQLite,$q){
var user = {};
/**get user data */
user.getData = function(){
//stores from the local database
var userData = [];
var query = "SELECT * FROM users";
$cordovaSQLite.execute(db, query, []).then(function(res) {
for (var i=0; i < res.rows.length; i++){
userData.push(res.rows.item(i));
}
console.log("User Data : " + JSON.stringify(userData));//this works
}, function (err) {
console.error(err);
})
return userData;
};
return user;
});
コントローラです:
angular.module('starter.controllers', [])
.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http, $state, $cordovaSQLite,$ionicNavBarDelegate,userService) {
console.log(userService.getData()); // is empty
})
何もここに返されません。あなたがチェーン
user.getData = function() {
//stores from the local database
var userData = [];
var query = "SELECT * FROM users";
//returning promise
return $cordovaSQLite.execute(db, query, []).then(function(res) {
for (var i = 0; i < res.rows.length; i++) {
userData.push(res.rows.item(i));
}
//return data once user Data created
return userData;
}, function(err) {
console.error(err);
})
};
はその後、コントローラ内部で、あなたが持っていることによって、データにアクセスすることができ、コントローラ内部で約束することができるように
私は質問があります。短いアンサー:すべてのデータベース操作は非同期チェックです。http://stackoverflow.com/questions/39563879/sqlite-plugin-for-cordova-code-running-backwards – MikeVelazco