我正在使用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版本时?
由于
答案 0 :(得分:12)
根据这个:https://developer.mozilla.org/en-US/docs/IndexedDB/Using_IndexedDB?redirectlocale=en-US&redirectslug=IndexedDB%2FIndexedDB_primer你已经得到了正确答案:
更改db版本时会调用 onupgradeneeded
:从无数据库到第一版,第一版到第二版......
onsuccess
:即使数据库模式尚未更改。