2016-09-23 9 views
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); 
    }) 
}; 

はその後、コントローラ内部で、あなたが持っていることによって、データにアクセスすることができ、コントローラ内部で約束することができるように

+0

私は質問があります。短いアンサー:すべてのデータベース操作は非同期チェックです。http://stackoverflow.com/questions/39563879/sqlite-plugin-for-cordova-code-running-backwards – MikeVelazco

答えて

0

第一のものは、あなたが、その後$cordovaSQLLite.execute約束を返し、あなたの約束の成功コールバックから&をuserDataを返却する必要があります。その方法以上の機能

angular.module('starter.controllers', []) 
.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http, $state, $cordovaSQLite,$ionicNavBarDelegate,userService) { 
    userService.getData().then(function(userData){ 
     console.log(userData); 
    }); 
}) 
関連する問題