Mongoose: как вывести правильно ошибку, если пользователь в БД не найден
Не могу понять, почему при запросе в базе несуществующего пользователя, выдается совсем другая ошибка, не та что я задал:
const userSchema = new mongoose.Schema({
name: {
type: String,
minlength: [2, 'Минимальная длина имени 2 символа'],
maxlength: [30, 'Максимальная длина имени 30 символов'],
required: true,
},
about: {
type: String,
minlength: [2, 'Минимальная длина 2 символа'],
maxlength: [30, 'Максимальная длина 30 символов'],
required: true,
},
avatar: {
type: String,
required: true,
validate: {
validator: (url) => pattern.test(url),
message: (props) => `${props.value} некорректная ссылка`,
},
},
});
module.exports = mongoose.model('user', userSchema);
const getUser = (req, res) => {
User.findById(req.params.userId)
.orFail(
() => new Error(`Пользователь с таким _id ${req.params.userId} не найден`) //надо получить эту строку
)
.then((user) => res.send({ data: user }))
.catch((err) => res.status(404).send({ error: err.message }));
};
Если id корректный, то возвращается правильный пользователь, если же задать неверный id, но возвращается:
{
"error": "Cast to ObjectId failed for value \"5f0197c45434e93ca4eab6d399\" at path \"_id\" for model \"user\""
}