Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Problemas ao adicionar

Tenho recebido a mensagem de erro abaixo ao adicionar a negociação

Uncaught TypeError: Cannot read property 'transaction' of undefined
    at adiciona (indexdb.html:39)
    at <anonymous>:1:1

Reli meu código várias vezes mas não tenho achado o erro.. Segue abaixo o código que usei:

var connection;

            var openRequest = window.indexedDB.open('aluraframe', 2);

            openRequest.onupgradeneeded = e => {
                console.log("Cria ou altera um banco já existente");
                let minhaConnection = e.target.result;                    

                if (minhaConnection.objectStoreNames.contains('negociacoes')) {
                    minhaConnection.deleteObjectStore('negociacoes');
                } 

                minhaConnection.createObjectStore('negociacoes', {autoIncrement: true});

            };
            openRequest.onsuccess = e => {
                console.log("Conexão obtida com sucesso");
                let connection = e.target.result;
            };
            openRequest.onerror = e => {
                console.log(e.target.error);
            };

            function adiciona()
            {
                let transaction = connection.transaction(['negociacoes'], 'readwrite');
                let store = transaction.objectStore('negociacoes');
                let negociacao = new Negociacao(new Date(), 1, 200);
                let request = store.add(negociacao);

                request.onsuccess = e => {
                    console.log('Negociação incluída com sucesso');
                };

                request.onerror = e => {
                    console.log("Não foi possível incluír a negociação");
                };
            }
3 respostas
solução

Boa noite, David! Como vai?

O correto seria fazer:

openRequest.onsuccess = e => {
     console.log("Conexão obtida com sucesso");
     connection = e.target.result;
};

Veja se com essa correção as coisas funcionam da forma como vc esperava.

Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Apenas complementando a resposta do Gabriel Leite, que deve solucionar o problema, esse erro que está aparecendo indica que você está tentando ler uma propriedade de uma variável undefined.

Ou seja, connection está declarado, mas não possui valor algum. Isso está ocorrendo pelo fato de você estar declarando ela no início do código:

var connection;

E causando uma pequena confusão declarando let connection no meio do código, limitando o escopo naquele bloco.

Espero não ter causado uma confusão hehe. Valeu!

Obrigado pessoal! Foi exatamente isto

Problema resolvido