1
resposta

[Bug] Erro ao fazer o push

Ola Flavio,

venho implementando seu projeto para e passo.

Ocorre que estou tendo um erro ao tentar ler os dados do Indexeddb.

Para rodar, fui obrigado a substituir o nome do campo data pelo campo (variavel) privada _data.

negociacoes.push( new Negociacao(dado.**_data**, dado.quantidade, dado._valor));
function listaTodos() {

            let transaction = connection.transaction([`negociacoes`], `readwrite`);

            let store = transaction.objectStore(`negociacoes`);

            let cursor = store.openCursor();

            let negociacoes = [];

            cursor.onsuccess = e => {

                let atual = e.target.result;

                if(atual) {
                    let dado = atual.value;
                    console.log(dado);

                    negociacoes.push( new Negociacao(dado._data, dado.quantidade, dado.valor));
                    atual.continue();
                } else {
                    console.log(negociacoes);
                }

            }

            cursor.onerror = e => {

            }
        }

Note que no valor salvo no banco realmente NÃO existem as data, quantidade e valor

{_data: Tue Feb 21 2023 16:35:07 GMT-0300 (Brasilia Standard Time), _quantidade: 1, _valor: 200}
_data: Tue Feb 21 2023 16:35:07 GMT-0300 (Brasilia Standard Time)
No properties
_quantidade: 1
_valor: 200

Se faço um console.log(negociação), antes do let request = store.add(negociacao), temos

Negociacao {_data: Tue Feb 21 2023 16:53:11 GMT-0300 (Brasilia Standard Time), _quantidade: 1, _valor: 200}
_data:  Tue Feb 21 2023 16:53:11 GMT-0300 (Brasilia Standard Time) {}
_quantidade: 1
_valor:  200
data: (...)
quantidade: (...)
valor: (...)
volume: (...)

Porém, minha dúvida, no seu video, o valor salvo também não continha.

veja o erro:

Uncaught TypeError: Cannot read properties of undefined (reading 'getTime')

Pode ajudar nesta questão?

1 resposta

Olá Daniel, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Com base nos logs enviados, o objeto da classe Negociacao está sendo salvo corretamente no banco IndexdDb. Neste caso foi criado adicionado uma negociação com a data: Tue Feb 21 2023 16:35:07 GMT-0300 (Brasilia Standard Time), quantidade: 1 e por fim com o valor: valor: 200.

Quanto ao no properties significa que o objeto não tem propriedades adicionais além das que foram listadas. Esta mensagem é uma mensagem informativa, não um erro.

No seu exemplo, o objeto tem três propriedades:

  • _data: que contém um objeto de data com a data e hora da negociação.
  • _quantidade: que contém o número de unidades negociadas.
  • _valor: que contém o valor da unidade negociada.

Quando você visualiza o objeto, alguns consoles de desenvolvedor, como o console do navegador, exibem a mensagem No properties para indicar que o objeto não tem outras propriedades além das que já foram exibidas.

Quanto a não exibição da data durante a aula quero gravar em uma Object Store, mas onde está a transação?. No minuto 10:40 o professor explique que a data não será exibida no painel do desenvolvedor, devido a um bug presente no navegador na versão usada pelo professor.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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