Obtener clave de registro agregado en IndexedDB

Tengo este código en IndexedDB:

var request = objectStore.add({ entryType: entryType, entryDate: t}); 

Ahora quiero saber la clave de este disco que se acaba de agregar. ¿Cómo hago eso?

Encontré este artículo , y este código:

 var data = {"bookName" : "Name", "price" : 100, "rating":"good"}; var request = objectStore.add(data); request.onsuccess = function(event){ document.write("Saved with id ", event.result) var key = event.result; }; 

Esto no funciona para mí: la clave aparece como indefinida. Creo que me estoy perdiendo algo básico aquí!

Ir a través de este código

 var data = {"bookName" : "Name", "price" : 100, "rating":"good"}; var request = objectStore.add(data); request.onsuccess = function(event){ document.write("Saved with id ", event.result) var key = event.target.result; }; 

Espero que este código funcione para recuperar la clave del último registro insertado

La especificación está escrita para el agente de usuario, no para el desarrollador. Así que es confuso. El agente de usuario proporciona el generador de claves.

Cualquier objeto de event que sea recibido por el controlador onsuccess siempre tiene event.target.result . Es la llave que estás buscando. La clave se genera automáticamente si no la proporciona, asumiendo que establece autoIncrement en verdadero.

Está documentado en el Paso 8: de la siguiente manera:

  1. El resultado de este algoritmo es clave.

El truco aquí es saber cómo buscar utilizando frases de forma iterativa, hasta que llegue a lo que necesita. Nunca he escuchado de IndexedDB antes, pero parece que he encontrado lo que quieres.

Puse “IndexedDB” en un motor de búsqueda y encontré esto . Eso produjo la frase “generador de claves”, así que busqué eso también, lo que me llevó a esto y esto .

El enlace de StackOverflow discute el uso de UUID, que por supuesto pueden generarse en JavaScript, y el último enlace parece tener ejemplos para hacer lo que quiere de forma inmediata.

    Intereting Posts