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.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software