Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

298
Vistas
Seeking proper way to use the get() method of INDEXEDDB data store

I am attempting to use a simple indexeddb 'get' method to retrieve a keyed record from an existing data store. For some reason that i have been unable to find, though the result of my 'get' request is 'successful', the returned value is 'undefined'.

The code below is called from an event listener that is fired when the user clicks on a button in a row of a table, indicating the user wants details on that particular row. Each row in the table represents a record in the indexeddb data store that has already been created. There are 8 values of interest in each row, but only 3 are displayed in my html table. I am simply attempting to access the row in the data store to get all 8 values in order to pass them along to the next process.

The following code is called from an event listener created on a 'Select' button for each row...

async function getGameInProgressDetails(gameID) {
 try {
    db = await idbConnect(DBName,DBVersion);
    let tx = db.transaction(['gamesList'], 'readonly');
    let gameStore = tx.objectStore('gamesList');
    // I have confirmed the 'gameID' passed in is the key value that i would expect
    // to retrieve the desired result.
    let req = gameStore.get(gameID);  // gameID comes from the selected row in the html table.
   
    req.onsuccess = (ev) => {
      console.log('Success');
      let request = ev.target;
      console.log(request); // returns an IDBRequest object with result: undefined and error: null.
      let theGame = request.result;
      console.log(theGame );  // displays 'undefined'.
    }
    req.onerror = (err) => {
      console.warn(err);
    };
    
    
  } catch (e) {
      console.warn(e);
  }

I get the 'success' message indicating that the 'get' operation was successful, but my result is 'undefined'. Could someone please tell me if i am missing a step or if there's another way to go about this that i should look into? I've looked at a variety of tutorials and i must be overlooking something 'obvious'.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

I discovered the problem with my code/approach and am answering my own question. The reason that the above code was not working was not because of my indexeddb code or logic at all.

What i discovered was that the index value that i had passed into the routine needed to be cast as an integer before the get() method call, JS was treating it as a string value. I was confused by the fact that i had checked the value in a console.log statement and it had shown the appropriate value. What i hadn't considered was how JS evaluated what type the variable value was.

For those coming later and seeing this, my final code was thus:

async function getGameInProgressDetails(gameID) {
  db = await idbConnect(DBName,DBVersion);
  let tx = db.transaction(['gamesList'], 'readonly');
  var gameStore = tx.objectStore('gamesList');
 
  let gameIndex = gameStore.index("gameIDIdx");

  let request = gameIndex.get(parseInt(gameID));  //!! NOTE THE parseInt!!
  
  request.onsuccess = function() {
    if (request.result !== undefined) {
      console.log("Games", request.result);
    } else {
      console.log("No such games.");
    }
  }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda