JavaScript - API IndexedDB

 
Vista:
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por Jean (22 intervenciones) el 23/02/2021 11:50:42
Hola, tengo este código y no se porque falla, es una base de datos para llevar registros de libros, deberia poderse agregrar datos a la base y poner leer una lista de ellos pero me da errores que no se de donde vienen.
Gracias

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!doctype html>
<head>
    <script>
        function iniciar()
        {
            var boton=document.getElementById("grabar");
            boton.addEventListener("click",agregarlibro, false);
        }
        indexedDB.open = function crear()
        {
            var request = indexedDB.open("valores");
            request.onsuccess = function(e)
            {
                indexedDB.db = e.target.result;
            }
            request.onfailure = indexedDB.onerror;
        }
        function crear (e)
        {
            bd=e.result
            if(bd.version=="");
            {
                var solicitud=bd.setVersion("1.0")
                solicitud.addEventListener("error",errores, false);
                solicitud.addEventListener("success",crearbd,false);
            }
        }
        function agregarlibro( )
 
        {
            var indentificador = document.getElementById("identificador").value
            var titulo=document.getElementById("titulo").value
            var ano=document.getElementById("año").value
            var transaccion=bd.transaction(["biblioteca"],IDBTransaction.Lista)
            var almacen=transaccion.objectStore("titulo")
            solicitud.addEventListener("Success",function(){mostrar(clave)},false);
            document.getElementById("identificador").value=""
            document.getElementById("titulo").value=""
            document.getElementById("año").value=""
        }
        function mostrar(clave)
        {
            var transaccion=bd.transaction(["biblioteca"])
            var almacen=transaccion.objectStore("titulo")
            var solicitud=almacen.get(clave)
            solicitud.addEventListener("success",mostrarlista, false)
 
        }
        function mostrarlista(e)
        {
            var resultado=e.result
            cajadatos.innerHTML="<div>"+resultado.id+" - "+resultado.nombre+" - "+resultado.fecha+"<div>"
        }
        window.addEventListener("load", iniciar, false);
        </script>
</head>
<body>
    <section id="biblioteca">
        <form name="formulario">
            <p>Identificador del libro:<br><input type="text" name="idetificador" id="identificador"></p>
            <p>Titulo:<br><textarea name="titulo" id="titulo"></textarea></p>
            <p>Año de publicacion<br><textarea name="año" id="año"></textarea></br></p>
            <p><input type="button" name="grabar" id="grabar" value="Grabar"></p>
        </form>
    </section>
    <section id="cajadatos">
        No hay informacion disponible
    </section>
</body>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por joel (895 intervenciones) el 23/02/2021 15:23:18
Hola Jean, el error lo tienes en la linea 34, ya que la variable bd no esta definida cuando añades un nuevo libro... no deberías llamar la función crear() ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por Jean (22 intervenciones) el 23/02/2021 21:56:11
pero cuando lo defino salta otro error, pero voy a probar a llamar la funcion crear.
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por Jean (22 intervenciones) el 25/02/2021 19:11:28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!doctype html>
<head>
    <script>
        function iniciar()
        {
            var boton=document.getElementById("grabar");
            boton.addEventListener("click",agregarlibro, false);
        }
        indexedDB.open = function crear()
        {
            var request = indexedDB.open("valores");
            request.onsuccess = function(e)
            {
                indexedDB.db = e.target.result;
            }
            request.onfailure = indexedDB.onerror;
        }
        function crear (e)
        {
            bd=e.result || e.target.result
            if(bd.version=="");
            {
                var solicitud=bd.setVersion("1.0")
                solicitud.addEventListener("error",errores, false);
                solicitud.addEventListener("success",crearbd,false);
            }
        }
        function agregarlibro(e)
        {
            bd=e.result || e.target.result
            var indentificador = document.getElementById("identificador").value
            var titulo=document.getElementById("titulo").value
            var año=document.getElementById("año").value
            var transaccion=bd.transaction(["biblioteca"],IDBTransaction.crear)
            var almacen=transaccion.objectStore("titulo")
            solicitud.addEventListener("Success",function(){mostrar(clave)},false);
            document.getElementById("identificador").value=""
            document.getElementById("titulo").value=""
            document.getElementById("año").value=""
        }
        function mostrar(identificador)
        {
            var transaccion=bd.transaction(["biblioteca"])
            var almacen=transaccion.objectStore("titulo")
            var solicitud=almacen.get(clave)
            solicitud.addEventListener("success",mostrarlista, false)
 
        }
        function mostrarlista(e)
        {
            var resultado=e.result
            cajadatos.innerHTML="<div>"+resultado.id+" - "+resultado.nombre+" - "+resultado.fecha+"<div>"
        }
        window.addEventListener("load", iniciar, false);
        </script>
</head>
<body>
    <section id="biblioteca">
        <form name="formulario">
            <p>Identificador del libro:<br><input type="text" name="idetificador" id="identificador"></p>
            <p>Titulo:<br><textarea name="titulo" id="titulo"></textarea></p>
            <p>Año de publicacion<br><textarea name="año" id="año"></textarea></br></p>
            <p><input type="button" name="grabar" id="grabar" value="Grabar"></p>
        </form>
    </section>
    <section id="cajadatos">
        No hay informacion disponible
    </section>
</body>
He hecho estos cambios, y ahora el error es que no lee corecctamente "transaction" y no entiendo porque
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por Joel (895 intervenciones) el 26/02/2021 07:59:07
Hola Jean, a mi me da error por el uso de la ñ en las variables, id y nombre del campo. Es aconsejable no utilizar caracteres latinos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 59
Ha aumentado su posición en 2 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por Jean (22 intervenciones) el 03/03/2021 10:25:25
Lo cambie de esta forma eliminando las "ñ" y me sigue dando error y no entiendo el porque
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<!doctype html>
<head>
    <script>
        function iniciar()
        {
            var boton=document.getElementById("grabar");
            boton.addEventListener("click",agregarlibro, false);
        }
        indexedDB.open = function crear()
        {
            var request = indexedDB.open("valores");
            request.onsuccess = function(e)
            {
                indexedDB.bd = e.target.result;
            }
            request.onfailure = indexedDB.onerror;
        }
        function crear (e)
        {
            bd=e.result || e.target.result
            if(bd.version=="");
            {
                var solicitud=bd.setVersion("1.0")
                solicitud.addEventListener("error",errores, false);
                solicitud.addEventListener("success",crearbd,false);
            }
        }
        function agregarlibro(e)
        {
            bd=e.result || e.target.result
            var indentificador = document.getElementById("identificador").value
            var titulo=document.getElementById("titulo").value
            var año=document.getElementById("year").value
            var transaccion=bd.transaction(["biblioteca"],IDBTransaction.crear)
            var almacen=transaccion.objectStore("titulo")
            solicitud.addEventListener("Success",function(){mostrar(clave)},false);
            document.getElementById("identificador").value=""
            document.getElementById("titulo").value=""
            document.getElementById("year").value=""
        }
        function mostrar(identificador)
        {
            var transaccion=bd.transaction(["biblioteca"])
            var almacen=transaccion.objectStore("titulo")
            var solicitud=almacen.get(identificador)
            solicitud.addEventListener("success",mostrarlista, false)
 
        }
        function mostrarlista(e)
        {
            var resultado=e.result
            cajadatos.innerHTML="<div>"+resultado.id+" - "+resultado.nombre+" - "+resultado.fecha+"<div>"
        }
        window.addEventListener("load", iniciar, false);
        </script>
</head>
<body>
    <section id="biblioteca">
        <form name="formulario">
            <p>Identificador del libro:<br><input type="text" name="idetificador" id="identificador"></p>
            <p>Titulo:<br><textarea name="titulo" id="titulo"></textarea></p>
            <p>Año de publicacion<br><textarea name="año" id="year"></textarea></br></p>
            <p><input type="button" name="grabar" id="grabar" value="Grabar"></p>
        </form>
    </section>
    <section id="cajadatos">
        No hay informacion disponible
    </section>
</body>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

API IndexedDB

Publicado por joel (895 intervenciones) el 03/03/2021 14:40:50
Hola Jean, todavía tienes un par de eñes que dan errores... pero una vez reemplazado, en la linea 34, para utilizar transaction, tienes que tener un objeto IDBDatabase, pero la variable bd que utilizas vale undefined, ya que e.result y e.target.result no existen!!! que intentas recuperar en la linea 30?

Para poder utilizar el IDBDatabase previamente tienes que abrirlo!!!

Mira este código haber si te sirve de guia... https://www.lawebdelprogramador.com/codigo/JavaScript/3347-Nota-Autoadhesiva-en-javascript.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar