Salve pessoal!
Estou desenvolvendo um pequeno sistema em Node e estou utilizando Express com Mongo/Mongoose.
Estou utilizando o código abaixo para fazer UPDATE no meu objeto, mas gostaria de saber o que vocês acham.
Na verdade a minha dúvida é quanto ao modo de devolver o erro na API, dado que estou devolvendo 200 para OK, 404 quando o objeto não é encontrado ou, por último e não menos importante, 412 quando o usuário tentou alterar um recurso que já foi atualizado previamente por outro processo e/ou usuário.
Como vocês costumam fazer?
controller.save = function (req, res) {
var _id = req.params.id;
var data = {
"name": req.body.name,
"description": req.body.description,
"createdBy": req.body.createdBy,
"updatedBy": req.user.sub,
"version" : req.body.version + 1
};
try {
ContractType.findOneAndUpdate({'_id': _id, 'version': req.body.version}, data, {new: true},
function (error, contractType) {
if(error) {
console.error(error);
res.status(500).json(error);
}else {
if(contractType) {
res.json(contractType);
} else {
ContractType.findById(_id, function (error, contractType) {
if(error) {
console.log(error);
res.status(404).json(error);
} else {
if (!contractType){
res.status(404).json({error: 'Tipo de Contrato não existe ou foi excluído.'})
} else {
res.status(412).json(contractType);
}
}
}
);
}
}
});
} catch(exc) {
console.error(exc);
res.status(500).json(exc);
}
};