Search code examples
javascriptweb-storage

WebStorage - executeSql gives undefined is not a function in for loop


Here is my code :

Given an object, I'm trying to insert some data in a webStorage db. Problem is that console returns me a "undefined is not a function", and I have no clue why

Here is a snippet of my code

try {
  db = openDatabase("mca", "1.0", "db mca", 200000);
  db.transaction(function(tx) {
    tx.executeSql("CREATE TABLE IF NOT EXISTS planning_x_material(id INTEGER PRIMARY KEY AUTOINCREMENT, planning_id INTEGER, material_id INTEGER,  material_name TEXT)", []);
  }, onDbError, fillDb);
} catch(e) {
  alert("webstorage error");
}


function callback_planning_material(obj) {
  console.log(obj);
  
  db.transaction(function(tx) {
    for(var k = 0; k < obj.length; k++) {
      for (var i = 0; i < obj[k].material.length; i++) {
        (function (k, i) {
          var planning = obj[k];
          
          var material = planning.material[i];
            
          tx.execuseSql("INSERT INTO planning_x_material(planning_id, material_id, material_name) VALUES (?, ?, ?)", [planning.id, material.id, material.name]); // here console gives me "undefined is not a function" error
        })(k, i);
      }
    }
  }, onDbError);
}

function fillDb() {
  // example object
  var obj = [
    {
      id: 1,
      name: "name 1",
      material: [
        { id: 1, name: "mat. 1" },
        { id: 2, name: "mat. 2" },
      ]
    },
    
    {
      id: 2,
      name: "name 2",
      material: [
        { id: 3, name: "mat. 3" },
        { id: 4, name: "mat. 4" },
      ]
    }
  ];
  
  
  callback_planning_material(obj);
}
Any idea?


Solution

    1. onDbError not defined
    2. tx not tx2
    3. In insert executeSql not execuseSql

    Should work

    try {
      db = openDatabase("mca", "1.0", "db mca", 200000);
      db.transaction(function(tx) {
        tx.executeSql("CREATE TABLE IF NOT EXISTS planning_x_material(id INTEGER PRIMARY KEY AUTOINCREMENT, planning_id INTEGER, material_id INTEGER,  material_name TEXT)", []);
      }, onDbError, fillDb);
    } catch(e) {
      console.log("webstorage error",e);
    }
    
    function onDbError(tx, err){
      console.log('There is error', err);
    
    }
    
    
    function callback_planning_material(obj) {
      console.log(obj);
    
      db.transaction(function(tx) {
        for(var k = 0; k < obj.length; k++) {
          for (var i = 0; i < obj[k].material.length; i++) {
            (function (k, i) {
              var planning = obj[k];
    
              var material = planning.material[i];
    
              tx.executeSql("INSERT INTO planning_x_material(planning_id, material_id, material_name) VALUES (?, ?, ?)", [planning.id, material.id, material.name]); // here console gives me "undefined is not a function" error
            })(k, i);
          }
        }
      }, onDbError);
    }
    
    function fillDb() {
      // example object
      var obj = [
        {
          id: 1,
          name: "name 1",
          material: [
            { id: 1, name: "mat. 1" },
            { id: 2, name: "mat. 2" },
          ]
        },
    
        {
          id: 2,
          name: "name 2",
          material: [
            { id: 3, name: "mat. 3" },
            { id: 4, name: "mat. 4" },
          ]
        }
      ];
    
    
      callback_planning_material(obj);
    }