![](/img/trans.png)
[英]When and why is the onupgradeneeded method called in indexedDB?
[英]Why is my onupgradeneeded callback never called when connecting to indexedDB?
我正在嘗試使用IndexedDB在本地存儲一些數據。 下面我有一個簡單的示例,試圖通過該示例觸發onupgradeneed事件
<html>
<head>
<script>
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){
alert("ERROR") ;
};
request.onupgradeneeded = function(event) {
alert("UPGRADE NEEDED") ;
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) {
alert("SUCCESS") ;
} ;
</script>
</head>
</html>
我試圖更改版本號,但是我在onupgradeneed上所做的任何嘗試都不會調用/觸發。 有什么建議嗎?
歡呼盧卡
我在FF 10中對此進行了測試,它對我有用。 (直到代碼嘗試使用未定義的“ db”變量”。)
你使用的是什么瀏覽器? 僅在FF 10中引發upgradeneeded事件。Chrome 16仍使用舊草案,在該草案中,您必須檢查db.version屬性,如果不是所需的,則調用db.setVersion。
如果使用的是FF10,是否確定尚未創建“ mydb”?
另外,請確保您正在通過真實的Web服務器對此進行測試。 FF不允許您將indexedDB與本地HTML文件一起使用。 如果發生這種情況,您應該在控制台中看到類似“由於數據庫本身無關的原因導致的操作失敗,並且未被任何其他錯誤代碼覆蓋的錯誤”之類的錯誤。
您沒有定義db變量
我有同樣的問題...這是MDN的代碼,他們沒有解釋如何在沒有setVersion()函數的情況下更新數據庫版本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.