2016-09-07 2 views
0

두 개의 indexeddb 데이터베이스를 호출하는 웹 응용 프로그램을 만들었습니다. 단추를 클릭하면 값을 저장하고 다른 페이지로 이동합니다.Intel XDK에서 IndexedDB 함수가 작동하지 않습니다

웹 응용 프로그램으로 완벽하게 작동하지만 Intel XDK에서 사용하려고하면 콘솔에 다음과 같이 표시됩니다. "잡히지 않은 TypeError : 'varBusquedaPAM'속성을 설정할 수 없습니다." 이것은 자바 스크립트입니다 :

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 (ID)"함수를 호출이 HTML 태그 형태 :

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

을 나는 같은 기능을 가진 과거에 일부 유사한 프로젝트 (색인화)을했다 전에는이 오류가 없었습니다. Intel XDK 제 버전이 3088 인 경우를 대비해서

뭔가를 잊었습니까?

감사합니다.

답변

1

오류는 사용자의 data 변수가 정의되지 않았 음을 의미합니다. object.get(1)이 개체 저장소의 개체와 일치하지 않으므로 data 변수가 정의되지 않았습니다.

+0

감사합니다. 즉, 이전에 사용한 데이터 (웹 응용 프로그램으로 테스트 한 데이터)가 사라졌습니다. –

+0

데이터가 더 이상 존재하지 않는 몇 가지 이유가 있습니다. 어떻게 든 그것을 삭제하거나 삭제할 수 있습니다. 또는 다른 출처의 데이터와 같이 데이터를 삽입하지 않은 데이터베이스에 연결할 수도 있습니다. – Josh

관련 문제