1
resposta

Meu trecho de Código está dando errado para tratamento dos erros

Eu tentei tratar a variavel result como null tanto no .then quanto no .catch, porém das duas formas não funciona o tratamento do result como 'null'. Resumindo de nenhuma forma ele passar pelo result e entende o null ele pula direto para middleware que trata como erro interno do servidor

 static listarClientesId = async(req, res, next) =>{
        
        const id = req.params.id;

        await clientes.findById(id)
        .then((result) => {

            console.log('Lucass - ' + result);
            res.status(200).json(result);
        })
        .catch((err) => {
            console.log('Lucass cactch - ' + err);

            if(result !== null){
                res.status(404).send({message: `${err.message} - ID do cliente não localizado!`});
            }else{
                next(err);
            }
            //res.status(400).send({message: `${err.message} - ID da ficha não localizado!`});

        })
    }
static listarClientesId = async(req, res, next) =>{
        
        const id = req.params.id;

        await clientes.findById(id)
        .then((result) => {

            console.log('Lucass - ' + result);

            if(result !== null){
                res.status(200).json(result);
            }else{
                console.log('Lucass - ELSE- ' + result);
                res.status(404).send({message: `${err.message} - ID do cliente não Localizado!`});
                console.log('Lucass - pulou a linha de status de id não localizado!');
            }
            
        })
        .catch((err) => {
            console.log('Lucass - ' + err);
            next(err);
            //res.status(400).send({message: `${err.message} - ID da ficha não localizado!`});

        })
    }
1 resposta

Bom dia Magnânimo Sr. Lucas, tudo bem com Vossa Excelência?

Nas duas situações apresentadas, temos erros de escopo de variável, no primeiro exemplo, o result não está no escopo do catch e, no segundo, o err não está no escopo do then.

A solução para o primeiro caso é verificar o nulo dentro do contexto then :

 static listarClientesId = async(req, res, next) =>{
        
        const id = req.params.id;

        await clientes.findById(id)
        .then((result) => {
            console.log('Lucass - ' + result);
            if(result !== null){
                res.status(200).json(result);    
            }else{
                res.status(404).send({message: `${id} - ID do cliente não localizado!`});
            }           
        })
        .catch((err) => {
            console.log('Lucass cactch - ' + err);
                next(err);
        })
    }

A solução para o segundo caso é só alterar o valor ${err.message} , pois não está no contexto then, para ${id} :

static listarClientesId = async(req, res, next) =>{
        
        const id = req.params.id;

        await clientes.findById(id)
        .then((result) => {
            console.log('Lucass - ' + result);
            if(result !== null){
                res.status(200).json(result);
            }else{
                console.log('Lucass - ELSE- ' + result);
                res.status(404).send({message: `${err.message} - ID do cliente não Localizado!`});
                console.log('Lucass - pulou a linha de status de id não localizado!');
            }            
        })
        .catch((err) => {
            console.log('Lucass - ' + err);
            next(err);
            //res.status(400).send({message: `${err.message} - ID da ficha não localizado!`});
        })
    }

Vale lembrar que "nenhum resultado encontrado" não é erro. Espero ter ajudado.