4
respostas

Falha ao executar add no IDBObjectStore

Eu percebi que outra pessoa deve a mesmo problema que eu, porém a solução que foi passada pra ele não é funcional para mim...

quando tento incluir uma negociação o console da um erro falando que está faltando uma key no parâmetro do do método add(), quando eu coloco a uma string 'teste' como segundo parâmetro, nenhum erro ocorre e a inclusão funciona perfeitamente.

Esse é o erro:

NegociacaoDao.js:16 Uncaught (in promise) DOMException: Failed to execute 'add' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator and the key parameter was not provided.
    at http://localhost:3000/js/app/dao/NegociacaoDao.js:16:18
    at new Promise (<anonymous>)
    at NegociacaoDao.adiciona (http://localhost:3000/js/app/dao/NegociacaoDao.js:11:16)
    at http://localhost:3000/js/app/controllers/NegociacaoController.js:34:22

Esse é o meu código(do método adiciona da classe NegociacaoDao):

adiciona(negociacao) {

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

            let request = this._connection
                .transaction([this._store], 'readwrite')
                .objectStore(this._store)
                .add(negociacao);

            request.onsuccess = e => {

                resolve();
            }; 

            request.onerror = e => {

                console.log(e.target.error);
                reject('Não foi possível adicionar a negociação');

            };   
        });
    }
4 respostas

Oi, Diogo, tudo bem?

O método adiciona, está correto. Você poderia disponibilizar o projeto para que possa tentar entender melhor o que pode ter ocorrido, disponibiliza o teu projeto ou no github ou no google drive para que possa testar. Aguardo :}

Tudo bem sim :)

Aqui está o github com a pasta client : https://github.com/diogo-valongo/JSA

Diogo, boa noite.

Eu tive esse mesmo problema e vi que houve varias soluções bem diferentes do que foi apresentado na aula, mas o que me chamou a atenção é que no teste feito no arquivo aprendendo_indexedDb.html funcionou perfeitamente e me lembrei que ele falou no início que, quando se faz alguma alteração na estrutura do banco, tem-se que atualizar a versão, e foi o que fiz. Mudei o valor de "version" para "5" e rodei novamente, e advinha só? FUNCIONOU!.. risos

Tenta lá, de repente funciona com você também.

Tentei mudar a versão e infelizmente não funcionou... Mas mesmo assim obrigado Marcelo.

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