私がしようとしているのは、SQLiteデータベースを使用してキーと値のペアを格納した後、キーに基づいてそれらを取得できるstorageserviceの種類を作成することです。これを達成するために、私は次のコードを設定しました:SQLiteクエリ結果が関数から返されない
.service('StorageService', function($cordovaSQLite, $q) {
if(window.cordova) {
db = $cordovaSQLite.openDB("vouchers.db");
} else {
db = window.openDatabase("vouchers.db", "1.0", "Vouchers db", -1);
}
$cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS vouchers (key text, value text)");
return {
getItem: function(item) {
var query = "SELECT key, value FROM vouchers WHERE key = ?";
$cordovaSQLite.execute(db,query,[item]).then(function(result) {
console.log(result.rows[0].value);
return result.rows[0].value;
});
},
setItem: function(item, data) {
var query = "INSERT INTO vouchers (key, value) VALUES (?,?)";
return $cordovaSQLite.execute(db, query, [item, data]);
}
};
})
今、これらのほとんどは素晴らしいです。私は、DB内の項目を格納しても、あなたが次の行に見ることができるように関数の中からそれらを取得し、ログインすることができます:私はこれをログインすると、私は期待値を取得
console.log(result.rows[0].value);
が、私はそれとログを返すときそれは私がこのサービスを使用しているコントローラでは未定義のままです。私のコントローラのコードは次のようになります:
var test = StorageService.getItem("testje");
console.log(test);
コンソールエラーはありませんのでご注意ください。ちょうど2つのログ。定義されていないコントローラから一つ、そして意図したとおりの値を返すサービスから1:私は誰もがここで間違って起こっている伝えることができます願っていた
controllers.js:465 undefined
services.js:122 dit is een testje!
。参考になる情報やコードがある場合は、私に連絡してください。