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

não consigo resolver esse erro

olá, estava fazendo a aula e tive alguns problema então recomecei o projeto do zero, quando criei a 'minhaConnection' ele começou a dar esse erro, já fiz de tudo ,mas não consegui resolver alguém poderia me ajudar?

aprendendo_indexeddb.html:19 Uncaught DOMException: Failed to execute 'createObjectStore' on 'IDBDatabase': An object store with the specified name already exists.
    at IDBOpenDBRequest.openRequest.onupgradeneeded.e (http://localhost:3000/aprendendo_indexeddb.html:19:25)
openRequest.onupgradeneeded.e @ aprendendo_indexeddb.html:19
IndexedDB (async)
(anonymous) @ aprendendo_indexeddb.html:12

segue meu código abaixo:

<!DOCTYPE html>
<html>
<head>
    <title>aprendendo indexedDB</title>
</head>
<body>

    <script>

        var connection;

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

        openRequest.onupgradeneeded = e =>  {

           console.log('Criando ou atualizando o banco');

           var minhaConnection = e.target.result;
           minhaConnection.createObjectStore('negociacoes');
        };

        openRequest.onsuccess = e => {

            console.log('conexão obtida com sucesso');

            connection  = e.target.result;

        };

        openRequest.error = e => {

            console.log(e.target.error);

        };



    </script>

</body>
</html>
3 respostas

Olá Paulo!

Como você já criou, você não pode altera-lo, você pode atualiza-lo ou deleta-lo.

Tente deleta-lo primeiro pra ver se com o seu novo código o erro para de acontecer.

deleteObjectStore()

Documentação

Abraços!

O erro acontece porque já existe uma ObjectStore chamada "negociacoes", tenta fazer o seguinte código:

        openRequest.onupgradeneeded = e =>  {

           console.log('Criando ou atualizando o banco');

           var minhaConnection = e.target.result;
           minhaConnection.deleteObjectStore('negociacoes');
           minhaConnection.createObjectStore('negociacoes');
        };
solução!

Olá! Faltou no seu código o trecho que verifica se a store existe apagando-a caso exista para em seguida criá-la novamente.

Veja como ensino no curso:

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');
};

Só dar uma repassada nessa aula para verificar essa parte.

Sucesso e bom estudo!