簡體   English   中英

為什么在連接到indexedDB時從未調用過onupgradeneeded回調?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM