Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

ConnectionFactory is not defined

Não consigo passar do video 3 da aula 2 pois aparece esse erro, inclusive, baixei o cod da aula mais a frente e o erro persiste.

aprendendo indexedDB:

    ConnectionFactory
        .getConnection()
        .then(connection => {

            // faz alguma coisa com a conexão, por exemplo, gravar uma negociação

            // connection.close() // não pode aceitar esse comando
        });

ConnectionFactory:

var stores = ['negociacoes'];
var version = 7;
var dbName = 'aluraframe';

class ConnectionFactory {

    constructor() {

        throw new Error("ConnectionFactory não pode ser instanciada");
    }

    static getConnection() {

        return new Promise((resolve, reject) => {

            let openRequest = window.indexedDB.open(dbName,version);

            openRequest.onupgradeneeded = e => {

                ConnectionFactory._createStores(e.target.result);

            };

            openRequest.onsuccess = e => {    

                resolve(e.target.result);
            };

            openRequest.onerror = e => {    

                // exibimos no console o objeto error
                console.log(e.target.error);

                // na rejeição da promise enviamos apenas o nome do erro
                reject(e.target.error.name);
            };

        });
    }

    static _createStores(connection) {

        stores.forEach(store => {

            if(connection.objectStoreNames.contains(store)) connection.deleteObjectStore(store);
            connection.createObjectStore(store, { autoIncrement: true });
        });

    }
}
3 respostas

Esses erros de "is not defined" ocorrem quando você tenta usar algum recurso que não é localizado. No caso desta classe de conexão, ela está funcionado. O problema deve estar no include que você fez no seu HTML.

Eu fiz o seguinte, peguei o conteúdo deste arquivo ConnectionFactory e crie uma arquivo chamado connection.js (grave numa pasta em qualquer lugar)

Dentro desta pasta , eu fiz o seguinte HTML

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">  
</head>
<body>
    <script src="connection.js"></script>
    <script>
         ConnectionFactory
        .getConnection()
        .then(connection => {
            console.log('estou aqui');
            // faz alguma coisa com a conexão, por exemplo, gravar uma negociação

            // connection.close() // não pode aceitar esse comando
        });
    </script>
</body>
</body>

Ao salvar e abrir, apareceu no console "estou aqui" e ele criou o banco!

Você importou o script do ConnectionFactory? É um erro básico que as vezes cometemos. Dá uma verificada.

solução!

Aguardo seu retorno ainda. Pode ficar tranquilo que mais de 200 alunos passaram desss parte sem qualquer problema.