HTML - Duda-HTML5-onupgradeneeded

 
Vista:
sin imagen de perfil

Duda-HTML5-onupgradeneeded

Publicado por Victor (22 intervenciones) el 24/05/2018 13:08:44
Buenas tardes.

Si alguien controla de html5 me gustaria saber por que no entra en la funcion onupgradeneeded.
Estoy trabajando con google Chorme
Este es el codigo:
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
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript">
                const dbName = "the_name";
 
 
                var request = indexedDB.open(dbName, 2);
                // Así se ve nuestra información de clientes.
                const customerData = [
                    {ssn: "444-44-4444", name: "Bill", age: 35, email: "bill@company.com"},
                    {ssn: "555-55-5555", name: "Donna", age: 32, email: "donna@home.org"}
                ];
 
 
                request.onsuccess = function (event) {
                // Hacer algo con request.result!
                db = event.target.result;
                alert("Entra en Onsuccess");
 
 
                request.onupgradeneeded = function (event) {
                    var db = event.target.result;
                    alert("Holaaaaaa dentro de onupgradeneeded");
                    // Se crea un almacén para contener la información de nuestros cliente
                    // Se usará "ssn" como clave ya que es garantizado que es única
                    var objectStore = db.createObjectStore("customers", {keyPath: "ssn"});
 
                    // Se crea un índice para buscar clientes por nombre. Se podrían tener duplicados
                    // por lo que no se puede usar un índice único.
                    objectStore.createIndex("name", "name", {unique: false});
 
                    // Se crea un índice para buscar clientespor email. Se quiere asegurar que
                    // no puedan haberdos clientes con el mismo email, asi que se usa un índice único.
                    objectStore.createIndex("email", "email", {unique: true});
 
                    // Se usa transaction.oncomplete para asegurarse que la creación del almacén
                    // haya finalizado antes de añadir los datos en el.
                    objectStore.transaction.oncomplete = function (event) {
                        alert("Holaaaaaaaaaaaa")
                        // Guarda los datos en el almacén recién creado.
                        var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers");
                        for (var i in customerData) {
                            customerObjectStore.add(customerData[i]);
                        }
                    }
                };
 
 
            };
 
            request.onerror = function (event) {
                // Hacer algo con request.errorCode!
                alert("Why didn't you allow my web app to use IndexedDB?!");
            };
        </script>
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>


PD:Alguien sabe de un curso(pdf) de HTML5 que sea realmente bueno?

Gracias de antemano,saludos.
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
sin imagen de perfil
Val: 6
Ha disminuido su posición en 10 puestos en HTML (en relación al último mes)
Gráfica de HTML

Duda-HTML5-onupgradeneeded

Publicado por Rafael (3 intervenciones) el 24/05/2018 13:30:18
Hola Victor:

1. Tu pregunta no es de HTML 5 es de javascript.
2. A mi entender a tu declaracion "var request = indexedDB.open(dbName, 2);" le falta un window....
1
var request = window.indexedDB.open(dbName, 3);

3. Estas declarando el onupdagradedneeded DENTRO del onsuccess....

Asi pues ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Duda-HTML5-onupgradeneeded

Publicado por Lopez (271 intervenciones) el 24/05/2018 16:11:30
Victor,

Lo que Rafa argumenta es correcto: Un error de sintaxis.
Ahora esto es parte de las apis soportadas por HTML5.
Sobre el taller/curso googlea sobre web apis que es lo que requieres (Websql etc).

Saludos!
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

Duda-HTML5-onupgradeneeded

Publicado por Victor (22 intervenciones) el 25/05/2018 09:57:22
Buenos dias.

Gracias de antemano por vuestras respuestas.
Por eso pregunto si alguien sabe de algun curso/pdf que conozco por que copiando los ejemplos de los que encuentro me falla el codigo y frustra bastante.
Ya hice los cambios que comentasteis y me salta este error:
"Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': An object store with the specified name already exists."
En esta linea: var objectStore = db.createObjectStore("customers", {keyPath: "ssn"});
Actualmente el codigo esta así,igual que el anterior solo que he sacado el onupgradeneeded del onsuccess:
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
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript">
                const dbName = "the_name";
 
 
                var request = window.indexedDB.open(dbName, 3);
                // Así se ve nuestra información de clientes.
                const customerData = [
                    {ssn: "444-44-4444", name: "Bill", age: 35, email: "bill@company.com"},
                    {ssn: "555-55-5555", name: "Donna", age: 32, email: "donna@home.org"}
                ];
 
 
                request.onsuccess = function (event) {
                // Hacer algo con request.result!
                db = event.target.result;
                alert("Entra en Onsuccess");
 
            };
 
 
                    request.onupgradeneeded = function (event) {
                    var db = event.target.result;
                    alert("Holaaaaaa dentro de onupgradeneeded");
                    // Se crea un almacén para contener la información de nuestros cliente
                    // Se usará "ssn" como clave ya que es garantizado que es única
                    var objectStore = db.createObjectStore("customers", {keyPath: "ssn"});
 
                    // Se crea un índice para buscar clientes por nombre. Se podrían tener duplicados
                    // por lo que no se puede usar un índice único.
                    objectStore.createIndex("name", "name", {unique: false});
 
                    // Se crea un índice para buscar clientespor email. Se quiere asegurar que
                    // no puedan haberdos clientes con el mismo email, asi que se usa un índice único.
                    objectStore.createIndex("email", "email", {unique: true});
 
                    // Se usa transaction.oncomplete para asegurarse que la creación del almacén
                    // haya finalizado antes de añadir los datos en el.
                    objectStore.transaction.oncomplete = function (event) {
                        alert("Holaaaaaaaaaaaa")
                        // Guarda los datos en el almacén recién creado.
                        var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers");
                        for (var i in customerData) {
                            customerObjectStore.add(customerData[i]);
                        }
                    }
                };
 
            request.onerror = function (event) {
                // Hacer algo con request.errorCode!
                alert("Why didn't you allow my web app to use IndexedDB?!");
            };
        </script>
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>

PD:Si necesito que alguien me aclare una cosa,esto se está usando en el mundo laboral?

Haber si me estoy peleando con esto para nada.

Gracias de antemano por vuestro tiempo,saludos.
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 Lopez
Val: 886
Plata
Ha mantenido su posición en HTML (en relación al último mes)
Gráfica de HTML

Duda-HTML5-onupgradeneeded

Publicado por Lopez (271 intervenciones) el 25/05/2018 15:52:30
Mi buen,

Lo que estas usando se llama WebSql,
hace no mas de unos días ayudamos a un colega con un problema/duda relacionada.
Veras, Websql es sino me equivoco, una API extensión, no soportada por la W3,
y varios grandes navegadores.

...Aun disponible y funcional sin problemas, pero va en un tema de la filosofía de compatibilidad/standares de
cada compañía de navegadores con respecto a la dependencia (websql depende de Sqllite),
estas prefieren una alternativa mas de código propio, y luego la llegada otras alternativas de almacenaje,
como indexdb, pouchDB.terminaron por dejar un tanto en el
olvido la apuesta de Google (Ojo, que sigue manteniendo el proyecto).
Creo Safari también invirtió capital.



Por sobre documentación, en ingles hay hay bastante, en español:
https://programacion.net/articulo/introduccion_a_web_sql_1305

Saludos!
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

Duda-HTML5-onupgradeneeded

Publicado por Victor (22 intervenciones) el 26/05/2018 10:13:55
Muchas gracias por atender mis dudas.

Tengo una ultima pregunta sobre el tema,de verdad será la ultima.
Actualmente esto se utiliza en el mundo profesional,con regularidad quiero decir,o su uso es esporádico?

Saludos.
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