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

Dúvida sobre documento não encontrado

Boa tarde!

Ao tentar recuperar uma foto que não existe, utilizando por exemplo o id 1 (http://localhost:3000/v1/fotos/1), a aplicação retorna o http code 500. Conforme a explicação do curso esse é o comportamento esperado, pois no código abaixo, ao não encontrar uma foto a variável terá conteúdo undefined e portanto será acionada a função de erro.

    api.buscaPorId = function(req, res) {
        model.findById(req.params.id)
        .then(function(foto) {
            if (!foto) throw new Error('Foto não encontrada');
            res.json(foto);
        }, function(error) {
            console.log(error);
            res.sendStatus(500);
        });
    };

A aplicação Angular está tratando isso pois quando acesso http://localhost:3000/#/fotos/edit/1 é retornada uma mensagem tratada: Não foi possível obter a foto.

Do ponto de vista da aplicação pode ser interessante diferenciar estes erros (registro não encontrado / erro interno do servidor) para retornar mensagens diferentes ao usuário final.

É possível fazer esse tratamento? Digo, quando o registro não for encontrado retornar um http code 200 com uma mensagem informando que nenhum registro foi encontrado.

Obrigado!

Tiago

2 respostas

Se entendi corretamente, acredito que o que você gostaria de fazer é mais ou menos isso:

res.status(200).json({erro: 'Nenhum registro foi encontrado!'});
solução!

Oi Tiago!

Você pode fazer isso, por exemplo:

api.buscaPorId = function(req, res) {
        model.findById(req.params.id)
        .then(function(foto) {
            if (!foto) return res.status(404).json('Foto não encontrada');
            res.json(foto);
        }, function(error) {
            console.log(error);
            res.sendStatus(500);
        });
    };

Só vai sair no tratamento do then se for um erro não esperado, um erro 500.

Sucesso e bom estudo meu aluno!