【问题标题】:IndexedDB function is not working in Intel XDKIndexedDB 函数在 Intel XDK 中不起作用
【发布时间】:2016-09-07 14:52:57
【问题描述】:

我制作了一个调用两个 indexeddb 数据库的 Web 应用程序,当单击一个按钮时,它会保存一个值并转到另一个页面。

它可以完美地作为 Web 应用程序使用,但是当我尝试将它与英特尔 XDK 一起使用时,它会在控制台中显示:“未捕获的类型错误:无法设置未定义的属性 'varBusquedaPAM'”。这是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)做过一些类似的项目,但我以前从未遇到过这个错误。以防万一我的英特尔 XDK 版本是 3088。

我是不是忘记了什么?

谢谢大家。

【问题讨论】:

    标签: indexeddb intel-xdk


    【解决方案1】:

    该错误表示您的 data 变量未定义。 data 变量未定义,因为 object.get(1) 与您的对象存储中的任何对象都不匹配。

    【讨论】:

    • 谢谢,这意味着我之前的数据(我作为 webapp 测试的)已经消失了?
    • 数据可能不再存在的原因有多种。您可能以某种方式删除了它,或者允许它被删除。或者,您可能连接到从未插入数据的数据库,例如来自不同来源的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多