2013-10-17 55 views
-1

我試圖插入數據在我的索引數據庫中,但函數onupgradeneed永遠不會被調用,只是onsuccess。數據庫的版本總是相同的(它是一個全局變量)。 我瞭解到,爲了進入onupgradeneed版本必須始終相同。就我而言,就是這樣。 所以,我沒有數據......我該怎麼辦? 謝謝!爲什麼onupgradeneeded在這段代碼中永遠不會被調用?

var db; 
var dbname = "mi"; 
var dbversion = 1; 

function abrirDB() 
{ 
    if (plataforma == plataformaW8) { 
     if (db == null) { 
      var request = window.indexedDB.open(dbname, dbversion); 
      request.onsuccess = function (evt) { 
       db = evt.target.result; 
       if (db.objectStoreNames.length == 0) 
        crearDB(); 
      }; 
      } 
     } 
} 
function crearDB() { 


    //Declaración datos BBDD 

     var paisesData = [{ id_pais: 1, pais: "Arabia Saudí", continente: "Asia", capital: "Riad", paisurl: "arabiasaudi", continenteurl: "asia" }, 
     { id_pais: 2, pais: "Emiratos Árabes Unidos", continente: "Asia", capital: "Abu Dhabi", paisurl: "emiratosarabes", continenteurl: "asia" }]; 


    ////////// 

    //Abrir BBDD 
    var request =window.indexedDB.open(dbname, dbversion); 

    request.onerror = function (evt) { 
     console.log("Error al abrir la bbdd" + evt.target.errorCode); 
    }; 


    request.onupgradeneeded = function (evt) { 
     db = evt.target.result; 

     var storePaises = db.createObjectStore(storePaisesNombre, { keyPath: "id_pais", autoincrement: false, unique: true }); 
     ....... 
    request.onsuccess = function (evt) { 
     //db = request.result; 
     db = evt.target.result; 
    }; 

    } 

回答

-1

停止使用全局數據庫變量,即使有些示例顯示它。這隻會給新手程序員帶來問題。請嘗試在How to get objectstore from indexedDB?尋求幫助。

+0

我已經解決了它。這是另一個文件在我的請求完成之前調用一個函數的問題。 – luperxe

1

更改您的dbversion變量2.這樣的數據庫將在新版本中打開和onupgradeneeded回調將調用

相關問題