IndexedDB 函数在 Intel XDK 中不起作用
IndexedDB function is not working in Intel XDK
我制作了一个调用两个 indexeddb 数据库的网络应用程序,当单击一个按钮时,它会保存一个值并转到另一个页面。
它作为 Web 应用程序运行完美,但当我尝试将它与 Intel XDK 一起使用时,它在控制台中显示:"Uncaught TypeError: Cannot set property 'varBusquedaPAM' of undefined"。这是 Javascript:
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
var dataBase = null;
var bdBusqueda = null;
function iniciarBD() {
dataBase = indexedDB.open('bdbeta', 4);
dataBase.onupgradeneeded = function (e) {
var active = dataBase.result;
var objetoProductos = active.createObjectStore("productos", {keyPath: 'id', autoIncrement: true});
objetoProductos.createIndex('Nombre_Producto', 'producto', {unique: true});
};
dataBase.onsuccess = function (e) {
varBusqueda();
};
dataBase.onerror = function (e) {
alert('Error al cargar la base de datos');
};
}
function varBusqueda() {
bdBusqueda= indexedDB.open('bdbeta2', 1);
bdBusqueda.onupgradeneeded = function (e) {
var active = bdBusqueda.result;
var objetoLista = active.createObjectStore("variableBusqueda", {keyPath: 'id', autoIncrement: true});
objetoLista.createIndex('Variable_de_Busqueda_Producto', 'varBusquedaPAM', {unique: true});
objetoLista.createIndex('Variable_de_Busqueda_Marca', 'varBusquedaMAM', {unique: true});
objetoLista.createIndex('Variable_de_Busqueda_Modelo', 'varBusquedaMAI', {unique: true});
};
bdBusqueda.onsuccess = function (e) {
//Do nothing
};
bdBusqueda.onerror = function (e) {
alert("Hubo un problema al conectar a la base de datos");
};
}
function irMarcas(id){
var active = bdBusqueda.result;
var data = active.transaction(["variableBusqueda"], "readwrite");
var object = data.objectStore("variableBusqueda");
var request = object.get(1);
request.onsuccess = function() {
var data = request.result;
data.varBusquedaPAM = id; // <---HERE IS WHERE THE ERROR IS SHOWN
var consultaActualizar = object.put(data);
consultaActualizar.onsuccess = function() {
window.location.href = "marca.html";
};
};
}
然后我从这个 html 标签调用函数 "irMarcas(id)":
<input type="button" id="TM" value="Tarjetas madre" onclick="irMarcas(this.id);">
我过去用相同的功能 (indexedDB) 做过一些类似的项目,但我以前从未遇到过这个错误。以防万一我的 Intel XDK 版本是 3088。
我是不是忘记了什么?
谢谢大家
该错误意味着您的 data
变量未定义。 data
变量未定义,因为 object.get(1)
不匹配对象存储中的任何对象。
我制作了一个调用两个 indexeddb 数据库的网络应用程序,当单击一个按钮时,它会保存一个值并转到另一个页面。
它作为 Web 应用程序运行完美,但当我尝试将它与 Intel XDK 一起使用时,它在控制台中显示:"Uncaught TypeError: Cannot set property 'varBusquedaPAM' of undefined"。这是 Javascript:
var indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
var dataBase = null;
var bdBusqueda = null;
function iniciarBD() {
dataBase = indexedDB.open('bdbeta', 4);
dataBase.onupgradeneeded = function (e) {
var active = dataBase.result;
var objetoProductos = active.createObjectStore("productos", {keyPath: 'id', autoIncrement: true});
objetoProductos.createIndex('Nombre_Producto', 'producto', {unique: true});
};
dataBase.onsuccess = function (e) {
varBusqueda();
};
dataBase.onerror = function (e) {
alert('Error al cargar la base de datos');
};
}
function varBusqueda() {
bdBusqueda= indexedDB.open('bdbeta2', 1);
bdBusqueda.onupgradeneeded = function (e) {
var active = bdBusqueda.result;
var objetoLista = active.createObjectStore("variableBusqueda", {keyPath: 'id', autoIncrement: true});
objetoLista.createIndex('Variable_de_Busqueda_Producto', 'varBusquedaPAM', {unique: true});
objetoLista.createIndex('Variable_de_Busqueda_Marca', 'varBusquedaMAM', {unique: true});
objetoLista.createIndex('Variable_de_Busqueda_Modelo', 'varBusquedaMAI', {unique: true});
};
bdBusqueda.onsuccess = function (e) {
//Do nothing
};
bdBusqueda.onerror = function (e) {
alert("Hubo un problema al conectar a la base de datos");
};
}
function irMarcas(id){
var active = bdBusqueda.result;
var data = active.transaction(["variableBusqueda"], "readwrite");
var object = data.objectStore("variableBusqueda");
var request = object.get(1);
request.onsuccess = function() {
var data = request.result;
data.varBusquedaPAM = id; // <---HERE IS WHERE THE ERROR IS SHOWN
var consultaActualizar = object.put(data);
consultaActualizar.onsuccess = function() {
window.location.href = "marca.html";
};
};
}
然后我从这个 html 标签调用函数 "irMarcas(id)":
<input type="button" id="TM" value="Tarjetas madre" onclick="irMarcas(this.id);">
我过去用相同的功能 (indexedDB) 做过一些类似的项目,但我以前从未遇到过这个错误。以防万一我的 Intel XDK 版本是 3088。
我是不是忘记了什么?
谢谢大家
该错误意味着您的 data
变量未定义。 data
变量未定义,因为 object.get(1)
不匹配对象存储中的任何对象。