Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Não funcionou

Aqui o código não funcionou, e eu tinha feito exatamente como no vídeo. Porém funcionou depois que eu retirei um "=" da condição na constante livroFiltrado.

Não sei se isso é alguma atualização no React, mas o programa não aceitou a condição "===", tive que alterar para "==", que inclusive é o que o Codeium tinha recomendado, aliás recomendo demais o pessoal instalar, porque é bastante útil.

Só pra inteirar, minha função ficou a seguinte:

function getLivroPorId(id) {
    const livros = JSON.parse(fs.readFileSync('./livros.json'));
    const livroFiltrado = livros.filter( livro => livro.id == id )[0];
    return livroFiltrado;
}
1 resposta
solução!

Acabei de descobrir o que aconteceu e o erro foi meu! Ao usar o '===' para verificar, o JavaScript vai conferir se o valor é estritamente igual. Minha aplicação dava erro pois eu escrevi errado o arquivo JSON.

No meu arquivo JSON eu tinha escrito os objetos da seguinte maneira:

{
    "id": 5,
    "nome": "Livro novo"
}

O ítem "id" precisaria estar entre aspas para o aplicativo funcionar corretamente, por isso quando tentava fazer a verificação usando '===' o aplicativo retornava com erro. Agora, com a formatação correta no arquivo JSON a aplicação rodou normalmente. A formatação correta então seria:

{
    "id": "5",
    "nome": "Livro novo"
}

Quando usei o '==' para verificar, a aplicação funcionou pois assim o JavaScript não verifica mais se a formatação está estritamente correta, então assim eu forçava a aplicação a funcionar mesmo o "id" não estando, de fato, formatado corretamente.

Sendo assim, a função getLivroPorId no arquivo livro.js na pasta servicos ficou de acordo com o que o professor passou:

function getLivroPorId(id) {
    const livros = JSON.parse(fs.readFileSync('./livros.json'));
    const livroFiltrado = livros.filter(livro => livro.id === id)[0];
    return livroFiltrado;
}