#node.js
#node.js
Вопрос:
Я работаю над проектом, в котором на данный момент необходимо перенаправить пользователя, если идентификатор курса не существует. Это код:
router.get('/taller/:id', (req, res) => {
let tallerId = req.params.id;
Taller.findOne({_id: tallerId}).then(taller => {
if(taller) {
res.render('taller');
} else {
res.redirect('/dashboard');
}
});
});
Идея заключается в том, что если идентификатор, переданный в параметрах, действительно существует в коллекции Talleres, отображается более высокий вид. Но, если это не так, то пользователь должен быть перенаправлен на панель мониторинга.
Когда выполняется код с недопустимым идентификатором, я получаю:
Предупреждение о необработанном отказе: ошибка преобразования в ObjectId не удалось для значения «5c7d9da0567a653a40295bc}» в пути «_id» для модели «Выше»
Заранее спасибо за любую помощь. Том.
Комментарии:
1. Что именно вы хотите, чтобы произошло, или ожидаете, что произойдет? Вы сообщаете нам о проблеме, с которой сталкиваетесь, но не о том, каково ваше ожидаемое поведение.
2. @jamesemanon там я его обновил!
3. можете ли вы увеличить размер при наличии данных?
Ответ №1:
Вы не определили блок catch, поэтому отклонения, т. е. ошибки, не обрабатываются, попробуйте приведенный ниже код
router.get('/taller/:id', (req, res) => {
let tallerId = req.params.id;
Taller.findOne({_id: tallerId}).then(taller => {
if(taller) {
res.render('taller');
} else {
res.redirect('/dashboard')
}
});
}).catch(err=>{console.log(err)});
Комментарии:
1. Проблема в том, что на самом деле оно не перенаправляет меня, когда не найдено ничего выше.
2. поскольку вы получите массив в результате запроса, не могли бы вы, пожалуйста, попробовать условие как if(taller.length!=0) вместо if (taller) один раз