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

[Dúvida] Também estaria correto desenvolver o livrosController com try/catch e de forma assíncrona?

Olá,

Desenvolvi o livrosController.js de forma um pouco diferente. Utilizei o try/catch e criei os métodos de forma assíncrona. Dessa forma também estaria correto ou teria alguma diferença onde não seria viável desenvolver dessa forma? Ainda estou procurando entender melhor quando o código deve ser assíncrono e se neste caso é interessante utiliza-lo.

import livros from '../models/Livro.js'

class LivroController {

    static listarLivros = async (req, res) => {
        try{
            const pegaTodosLivros = await livros.find()
            res.status(200).json(pegaTodosLivros)
        }catch(err){
            res.status(500).json({menssage: `${err.message} - Falha ao localizar livros.`})
        }
    }

    static listaLivrosPorId = async (req, res) => {
        const {id} = req.params.id
        try{
            const livroPorId = await livros.findOne(id);
            res.status(200).json(livroPorId)
        }catch(err){
            res.status(400).json({menssage: `${err.message} - Falha ao localizar Id do livro.`})
        }
    }

    static adicionaLivro = async (req, res) => {
        let livroAdicionado = new livros (req.body)
        try{
            await livros.create(livroAdicionado)
            res.status(200).send('Livro adicionado com sucesso.')
        }catch(err){
            res.status(500).json({menssage: `${err.message} - Falha ao adicionar livro.`})
        }
    }

    static atualizaLivro = async (req, res) => {
        let {id} = req.params.id
        let novasInfos = req.body
        try{
            await livros.updateOne(id, novasInfos)
            const livroAtualizado = await livros.findOne(id)
            res.status(200).json(livroAtualizado)
        }catch(err){
            res.status(500).json({menssage: `${err.message} - Falha ao atualizar livro.`})
        }
    }

    static deletaLivro = async (req, res) => {
        let {id} = req.params.id;
        try{
            await livros.deleteOne(id)
            res.status(200).send('Livro deletado com sucesso.')
        }catch(err){
            res.status(500).json({menssage: `${err.message} - Falha ao deleitar livro.`})
        }
    }

}

export default LivroController
2 respostas
solução!

Olá Wesley, tudo certo? Espero que sim :)

Sua implementação utilizando try/catch e métodos assíncronos está correta e é uma boa prática de programação. A utilização de métodos assíncronos é interessante ao ter operações que podem demorar um pouco mais para serem executadas, como operações de acesso a banco de dados. Dessa forma, a execução do código não fica travada enquanto a operação é realizada.

Além disso, a utilização do try/catch é importante para tratar possíveis erros que possam ocorrer durante a execução do código. Isso garante que o usuário final receba uma mensagem de erro mais clara e que o sistema não quebre completamente.

Espero ter ajudado e bons estudos!

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

Olá Emerson, Muito obrigado pela ajuda!!