3
respostas

nao compreendo o erro

olha primeiramente quero falar que estou começando a ficar descontente com a plataforma, e posto duvidas aqui que esta demorando mais de dois dias para responder , eu assinei o alura justamente por causa do suporte dos instrutores, o alura nao e uma plataforma barata, suporte aos alunos devia ser mais rapido, tenho algumas duvidas de css que nem foram respondidas.

espero que essa seja respondida mais rapido, pois quero avancar no curso.

class NegociacaoDao{

    constructor(connection){

        this._connection = connection;
        this._store = "negociacoes";
    }

    aciona(negociacao){

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

            console.log(this._connection);

            let request = this._connection
                        .transaction([this._store],'readwrite')
                        .objectStore(this._store) 
                        .add(negociacao); // inicio nao sabemos se adiçao funcionou//


            request.onsuccess = event =>{

                resolve();
            };

            request.onerror = event => {

                reject("ocorreu erro no adiciona");
            };


        }
class NegociacaoController {

    constructor() {

        let $ = document.querySelector.bind(document);

        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');

        this._listaNegociacoes = new Bind(
            new ListaNegociacoes(), 
            new NegociacoesView($('#negociacoesView')), 
            'adiciona', 'esvazia' , 'ordena', 'inverteOrdem');

        this._mensagem = new Bind(
            new Mensagem(), new MensagemView($('#mensagemView')),
            'texto');    

        this._ordemAtual = ''  

        connect.getConnection()
                .then(conection=>{
                    new NegociacaoDao(conection)
                        .listarTodos()
                        .then(lista=>{
                            lista.forEach(negociacao=>this._listaNegociacoes.adiciona(negociacao));
                        })    
                })
    }

    adiciona(event) {

        event.preventDefault();

        connect.getConnection()
                .then(conection=> { 
                console.log(conection);
                let negociaco = this._criaNegociacao();
                console.log(negociaco);

                new NegociacaoDao(conection)
                    .aciona(negociaco)
                    .then(()=>{

                        this._listaNegociacoes.adiciona(lista);
                        this._mensagem.texto = "foi";
                        this._limpaFormulario();

                    }).catch(e=> this._mensagem.texto = e);

                })
                .catch(eerr=> this._mensagem.texto = 'nao foi');

    }

bom eu estou recebendo este erro ao tentar acionar alguma negociacao: DataError: Failed to execute 'add' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator , esta dizendo que nao tem chave, mas tem sim, oq estou achando estrando e que o erro vem do metodo adiciona da negociacoes dao, la no reject envio a mensagem "ocorreu erro no adiciona", mas quando ele e capturado vem esta mensagem de cima, mas trocando o mensagem.texto no catch do adiciona a mensagem e trocada, provando que o erro vem de la. entenderam? sei que esta um pouco confuso. `

3 respostas

Olá Luan, tudo bem com você?

Você pode estar postando o código no github por exemplo ? Para que a gente possa dar uma analisada quando ocorrer erros desse tipo, fica um pouco mais fácil para ter acesso a todos arquivos :)

Irei mostrar algumas inconsistências que acredito que podem estar fazendo seu programa não funcionar, a primeira, e que acredito ser a causadora desse problema, vem de uma questão passada sua:

DataError: Failed to execute 'add' on 'IDBObjectStore': The object store uses out-of-line keys and has no key generator 

Provavelmente o IndexDB deve estar com alguma configuração errada, eu vi que em uma dúvida passada havia um erro de digitação:

conexao.createObjectStore(store,{autoIcrement:true});

Após você ter corrigido esse problema, você incrementou uma versão do indexDB ? Eu acredito que se ele criou a versão 4 com esse problema de incremento, você terá que mudar para 5, para que seja destruído e criado um novo banco com autoIncrement, dado que esse erro que você mandou é normalmente por não ter uma chave definida :)

O segundo problema que eu percebi é no método adiciona, aqui:

this._listaNegociacoes.adiciona(lista);

Em nenhum momento da função temos essa variável lista, no caso acredito que era pra ser: this._listaNegociacoes.adiciona(negociacao)

Você pode fazer essas mudanças e dizer o que aconteceu ?

Qualquer coisa estou a disposição :)

Abraços e Bons Estudos!

Olá Luan, tudo bem ?

Quando eu tento acessar o link que você me enviou está dando como bloqueado, você pode tentar fazer upload em outro local? Caso não utilize o github como sugeri anteriormente pode ser em um google drive :)

Abraços!