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

Erro ao adicionar

Olá, preciso de uma ajudinha, o código parece estar correto, não dá erro e quando chamo "adciona()" o console me retorna "Negociação incluída com sucesso", entretanto nada aparece do banco propriamente dito, está em branco minha storeobject negociacoes.

5 respostas

Opa. Você fechou e abriu o Chrome? É que mesmo salvando a tela que mostra o banco não fica sincronizada. Na dúvida, poste o código.

        var connection;

        var openRequest = window.indexedDB.open('aluraframe', 5); // o número indica a versão do banco, toda a atualização que for feita temos que somar 1 ao número

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

            if (minhaConnection.objectStoreNames.contains('negociacoes')) { //toda vez que houver uma atualização e destroi a tabela para ser criada novamente
                minhaConnection.deleteObjectStore('negociacoes');
            }

            minhaConnection.createObjectStore('negociacoes', { autoIncrement: true });  // primeiro cria o banco e dps a tablea ou objectstore
        };

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

        openRequest.onerror = e => {
            console.log(e.target.error);
        };

        function adiciona() {
            let transaction = connection.transaction(['negociacoes'], 'readwrite'); //abrindo a tabela para alterações, poderia ser readonly
            let store = transaction.objectStore('negociacoes'); // abrindo agora literalmente a tabela
            let negociacao = new Negociacao(new Date(), 3, 300);

            let request = store.add(negociacao); //grava dentro da tabela mas ainda não sabemos se foi

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

            request.onerror = e => {
                console.log('Não foi possível incluir a Negociação')
            };
        }

Olá Flavio, já atualizei o navegador e nada acontece, não dá erro algum, mas não adiciona no banco

Onde está a chamada da função adiciona? Você está fazendo pelo console? Tem que ser pelo console. Tem alguma mensagem no console? Se o callback de sucesso foi chamado ela foi salva. Chuto que você está com problemas para verificar o resultado. Como você está fazendo? Qual navegador ?

Vou testar seu código como estar e verificar.

solução!

Peguei seu código como esta, adicionei em uma página HTML, abri a página, fui no console e chamei "adiciona()". Fui lá na aba application, storage, indexedDB, cliquei, expandi. Não exibiu, mas é por um problema no Chrome que falo no video, inclusive peço para o aluno fechar ou abrir o navegador para dar um refresh ou algo nesse sentido. Dai fechei a página, foi em storage, indexedDB, aluraframe, cliquei no banco, expandiu e mostrou a store. Cliquei na store e vi os dados perfeitamente. Você tem que clicar no banco, vai expandir e vai mostrar a storage, dai clicando exibe.

Em suma, seu código esta funcionando como explicado no vídeo. Dá uma olhadinha nessa parte novamente, como eu faço a verificação. Se ainda tiver problema, me avise.