2

我试图在我的索引数据库中插入数据,但永远不会调用函数 onupgradeneed,只是调用成功。数据库的版本总是相同的(它是一个全局变量)。我知道为了进入 onupgradeneed 版本必须始终相同。就我而言,就是这样。所以,我没有数据......我该怎么办?谢谢!

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

  }
4

3 回答 3

2

将您的 dbversion 变量更改为 2。这样,数据库将在较新的版本中打开,并且将调用 onupgradeneeded 回调

于 2013-10-18T08:30:31.970 回答
1

您可以将版本 1 更改为两个,它对我有用,如下所示:

let openRequest = window.indexedDB.open ("MyTestDatabase", 2);
于 2020-07-08T14:47:38.993 回答
0

停止使用全局 db 变量,即使某些示例显示了它。它只会给新程序员带来问题。尝试查看我在如何从 indexedDB 中获取对象库的答案?求助。

于 2013-10-17T19:09:03.487 回答