为什么在此代码中从未调用过onupgradeneed? [英] Why is onupgradeneeded never called in this code?

查看:204
本文介绍了为什么在此代码中从未调用过onupgradeneed?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to insert data in my indexed db, but the function onupgradeneed never is called, just onsuccess. The version of the database is always the same (it is a global variable). I have understood that in order to get into onupgradeneed the version have to be always the same. In my case, it is in this way. So, I have no data... What can I do? Thanks!

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

  }

推荐答案

将dbversion变量更改为2.这样,数据库将以较新的版本打开,并且onupgradeneeded回调将被调用

Change your dbversion variable to 2. This way the db will open in a newer version and the onupgradeneeded callback will get called

这篇关于为什么在此代码中从未调用过onupgradeneed?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆