Допустим, у меня есть схема:
const transactionSchema = new mongoose.Schema({
"ID": {
type:String,
required:true,
maxlength:36,
minlength:35,
}
...
}
И если мой клиент попытается сохранить документ с идентификатором длиной менее 34, mongoose выдаст эту ошибку
{
"errors": {
"ID": {
"message": "Path `ID` (`k2131381a2asaddaddsdsw12sa3`) is shorter than the minimum allowed length (35).",
"name": "ValidatorError",
"properties": {
"minlength": 35,
"type": "minlength",
"message": "Path `{PATH}` (`{VALUE}`) is shorter than the minimum allowed length (35).",
"path": "ID",
"value": "k2131381a2asaddaddsdsw12sa3"
},
"kind": "minlength",
"path": "ID",
"value": "k2131381a2asaddaddsdsw12sa3",
"$isValidatorError": true
}
},
"_message": "transaction validation failed",
"message": "transaction validation failed: ID: Path `ID` (`k2131381a2asaddaddsdsw12sa3`) is shorter than the minimum allowed length (35).",
"name": "ValidationError"
}
Теперь, чтобы сообщить моему клиенту точную причину ошибки (т. Е. Идентификатор короче, чем ожидалось), мне нужно проделать большую тяжелую работу и написать различные операторы if else, как это:
if(error && error.ID && error.ID.kind === 'minlength'){
res.status(400).json({error:45});//error 45 refers to ID length errors. Client knows about it
}
Я делаю это неправильно? Есть ли чистый способ сказать мангусте просто дать мне ошибку с кодом 45, когда длина ID не подходит?