2016-10-25 11 views
0

私はphonegapを使ってオフラインアプリケーションを構築したいのですが、私はlocaldatabaseが必要です。私は私のアプリケーションをロードするindex.jsファイルを持って、そこに私はグローバル変数を持っています。phonegapでindexededDbを使用する

var db; 

私はそれで、ユーザーのログは、ユーザーがオフラインでそれを使用することができますのIndexedDBデータベース内のデータベース情報を保存することを、コントローラを持っています。

//controller call 
Database.create(res.data.categories); 

function Database() { 

return { 
    create: function (categoryDocs) { 
     var request = indexedDB.open("kaldoa", 1); 

     request.onsuccess = function (event) { 
      db = event.target.result; 
      console.log("DB loaded successfully"); 
     }; 

     request.onerror = function (event) { 
      console.log(event) 
     }; 

     request.onupgradeneeded = function (event) { 
      db = event.target.result; 
      console.log("DB initiliazed/created"); 

      //create collections 
      db.createObjectStore("categories", {autoIncrement: true}); 

      //create documents 
      var transaction = event.target.transaction; 
      var categories = transaction.objectStore("categories"); 

      //add array objects to document 
      categories.add(categoryDocs); 

     }; 

    } 
} 

} 

クロムインスペクタをチェックインすると、dbsが作成され、すべてが良好です。

ここでは、カテゴリという名前で保存されたデータを表示します。

カテゴリを処理する別のコントローラでは、これを行います。持つ

function categoryCtrl($scope, Category){ 

Category.browse().onsuccess = function (e) { 
    $scope.categories = e.target.result.value; 
}; 

}

問題イムは、データがクロームで動作していることですが、それは、PhoneGapのでは動作しません。 PhoneGapのでは私はこのコンソールのエラーは、私はそれがで働く理由を把握しようと、すべての日の私の頭を壊している

function Category() { 

return { 
    browse: function() { 
     return db.transaction(["categories"], "readonly").objectStore("categories").openCursor() 
    } 
} 
} 

カテゴリデータをフェッチするサービスに関連している

Error: undefined is not an object (evaluating 'db.transaction') 

このconsole.errorを取得しますクロムが含まれています。私は、2016年9月29日にリリースされたios 10が、サファリとウェブビューのサポートを追加したことを知っています。

indexeddb ios support

答えて

1

このようなグローバルデシベル変数を使用しないでください。アクセスしたときに定義され、開かれることは保証されていません。これは、非同期コードの動作のためです。

関連する問題