alphascript-server
Version:
CRUD operations for mongo and other functionalities to get started quickly in any CMS project
105 lines (94 loc) • 3.15 kB
JavaScript
var api = require('../../');
var errorList = {
DB_GENERIC: 'Não foi possível estabelecer ligação com o servidor de momento, por favor tente novamente mais tarde',
PDF_GENERIC: 'Não foi possível gerar o PDF de momento, por favor tente novamente mais tarde'
};
var main = module.exports = {
get: function (req, res) {
api.common.Error.find().sort({ created_at: -1 }).limit(100).lean().exec(function (err, items) {
if (err) {
logError(err);
return res.status(500).send(errorList.DB_GENERIC);
}
res.json(items);
});
},
log: logError,
mongoHandler: function (err, res, next) {
if (!err) return next();
var error = "Impossível concretizar operação na base de dados: ";
switch (err.code) {
case 2: //"BadValue"
error += "Valor inválido";
break;
case 9: //"FailedToParse"
error += "Conversão inválida";
break;
case 12: //"UnsupportedFormat"
error += "Formato não suportado";
break;
case 14: //"TypeMismatch"
error += "Tipo de dados inesperado";
break;
case 16: //"InvalidLength"
error += "Tamanho inválido";
break;
case 20: //"IllegalOperation"
error += "Operação ilegal";
break;
case 21: //"EmptyArrayOperation"
error += "Conjunto vazio";
break;
case 25: //"RemoteValidationError"
error += "Registo inválido";
break;
case 24: //"LockTimeout"
case 46: //"LockBusy"
case 50: //"ExceededTimeLimit"
case 89: //"NetworkTimeout"
case 107: //"LockFailed"
case 208: //"TooManyLocks"
error += "Servidor verificou periodo de muito trafego, por favor tente novamente";
break;
case 56: //"EmptyFieldName"
error += "Campo vazio";
break;
case 146: //"ExceededMemoryLimit"
error += "O seu pedido excedeu o limite de memória imposto";
break;
case 14031: //"OutOfDiskSpace"
error += "O seu pedido excedeu o limite de espaço imposto";
break;
case 17280: //"KeyTooLong"
error += "Chave do campo demasiado longa";
break;
case 57: //"DottedFieldName"
error += "Chave do campo contém carater ponto '.'";
break;
case 84: //"DuplicateKeyValue"
case 11000: //"DuplicateKey"
error += "Registo duplicado";
break;
case 116: //"DocTooLargeForCapped"
error += "Registo excede o tamanho limite autorizado";
break;
default:
if (err.name !== "ValidationError") return next(err);
if (typeof err.errors !== 'object') return next(err);
for (var field in err.errors) return next(new api.AlphaError(err.errors[field].message));
}
next(new api.AlphaError(error));
}
};
for (var key in errorList) {
main[key] = errorList[key];
}
function logError(err, req) {
if (!err) return;
console.error(err);
var obj = { description: err };
if (typeof req !== 'undefined') obj.data = req.headers;
var error = new api.common.Error(obj);
error.save();
return err;
}