Почему мой обратный вызов onupgradeneeded никогда не вызывается при подключении к indexedDB? - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь получить некоторые данные, хранящиеся локально, используя IndexedDB. Ниже у меня есть простой пример, с помощью которого я пытаюсь запустить событие onupgradeneeded

<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>

Я пытался изменить номер версии, но, что бы я ни пытался использовать onupgradeneeded, никогда не вызывается / не срабатывает. Есть предложения почему?

веселит Лука

Ответы [ 2 ]

5 голосов
/ 07 февраля 2012

Я проверил это в FF 10, и это сработало для меня.(Пока код не попытался использовать неопределенную переменную "db" ".)

Какой браузер вы используете? Событие upgradedeneeded возникает только в FF 10. Chrome 16 по-прежнему использует старый черновик, где вы должны проверитьсвойство db.version и вызовите db.setVersion, если это не то, что вам нужно.

Если вы используете FF10, уверены ли вы, что mydb еще не создан?

Кроме того,убедитесь, что вы тестируете это через настоящий веб-сервер. FF не позволит вам использовать indexedDB с локальными файлами HTML. Если это происходит, вы должны увидеть ошибку типа «Операция не удалась по причинам, не связанным с самой базой данных, а непокрыты любым другим кодом ошибки "в вашей консоли.

1 голос
/ 01 февраля 2012

Вы не определили переменную db

У меня та же проблема ... это код из MDN, и они не объяснили, как обновить версию БД без функции setVersion ()

...