2016-09-07 6 views
0

Я создал веб-приложение, которое вызывает две базы данных indexeddb, и при нажатии кнопки оно сохраняет значение и переходит на другую страницу.Функция IndexedDB не работает в Intel XDK

Он отлично работает как веб-приложение, но когда я пытаюсь использовать его с помощью Intel XDK, он отображается в консоли: «Uncaught TypeError: Невозможно установить свойство« 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"; 
       }; 
      }; 
     } 

И я вызываю функцию «irMarcas (идентификатор)» сформировать этот HTML тег:

<input type="button" id="TM" value="Tarjetas madre" onclick="irMarcas(this.id);"> 

Я сделал несколько подобных проектов в прошлом с теми же функциями (IndexedDB) и я никогда не получал этих ошибок раньше. На всякий случай моя версия Intel XDK - это 3088.

Я что-то забыл?

Спасибо всем.

ответ

1

Ошибка означает, что переменная data не определена. Переменная data не определена, поскольку object.get(1) не соответствует объектам в хранилище объектов.

+0

Спасибо, это значит, что мои предыдущие данные (которые я тестировал как webapp) исчезли? –

+0

Существует несколько причин, по которым данные больше не могут существовать. Возможно, вы каким-то образом удалили его или разрешили его удалить. Или вы можете быть подключены к базе данных, где вы никогда не вставляли данные, например, из другого источника. – Josh