我正在尝试在我的索引数据库中插入数据,但是onupgradeneed函数永远不会被调用,只是onsuccess。数据库的版本始终相同(它是一个全局变量)。 我已经明白,为了进入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;
};
}
答案 0 :(得分:1)
将dbversion变量更改为2.这样,db将在较新版本中打开,并且将调用onupgradeneeded回调
答案 1 :(得分:1)
您可以将版本1更改为两个,它对我来说像这样:
let openRequest = window.indexedDB.open ("MyTestDatabase", 2);
答案 2 :(得分:-1)
停止使用全局db变量,即使某些示例显示它也是如此。它只会给新程序员带来问题。请尝试在How to get objectstore from indexedDB?查看我的回答以获取帮助。