15

テストプロジェクトにIndexedDBを使用しています。次にいくつかのサンプルコードを示します。

var indexedDB = window.indexedDB || window.webkitIndexedDB 
                ||window.mozIndexedDB||window.msIndexedDB;

  var request = indexedDB.open("mydb",2),    

  customerData=[
    {ssn:"444-44-4444",name:"Bill",age:35,email:"bill@company.com"},      
    {ssn:"555-55-5555",name:"Donna",age:32,email:"donna@home.org"}
  ];

  request.onerror = function(event){

  };
  request.onupgradeneeded = function(event) {

     var objectStore = db.createObjectStore("customers",{keyPath:"ssn"});
     objectStore.createIndex("name","name",{unique:false});
     objectStore.createIndex("email","email",{unique:true});

     for(var i in customerData){
        objectStore.add(customerData[i]);
     }
  };
  request.onsuccess = function(e) {

  };

私が本当に理解していないのは、onupgradeneeded代わりにリクエストオブジェクトが実行される場合ですonsuccess(もちろんエラーがないと仮定します)。オブジェクトストアが存在しないときですか?または、新しいdbバージョンが作成されたとき?

ありがとう

4

1 に答える 1

15

これによると: https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB?redirectlocale=en-US&redirectslug=IndexedDB%2FIndexedDB_primerあなたはすでに正しい答えを持っています:

onupgradeneededデータベースバージョンを変更すると呼び出されます: データベースなしから最初のバージョン、最初のバージョンから2番目のバージョン...

onsuccessデータベーススキーマが変更されていなくても、新しいリクエストを行うたびに呼び出されます。

于 2012-08-26T20:01:35.247 に答える