Итак, когда мы проходим этот маршрут, сначала мы используем наше промежуточное ПО для проверки подлинности на месте, не так ли?После этого у нас есть обратный вызов и т. Д. Итак, что я хотел бы сделать здесь (мы говорим об обработке ошибок), это создать массив ошибок эмпатии.После этого я делаю чеки.Здесь мы проверяем, есть ли в нашем reg.body
имя пользователя и задача, а если чего-то не хватает, мы выдвигаем объект с пользовательскими сообщениями об ошибках.После этого мы проверяем, является ли массив ошибок больше 0, и если это так, мы отображаем эти ошибки.С другой стороны, если все прошло хорошо, мы хотим использовать эти данные, назначить их объекту, сохранить их в нашей БД, показать пользователю сообщение об успехе некоторых типов и потенциально перенаправить пользователя на соответствующий маршрут.,Task
будет Mongoose model
.Я использовал подход Express router
, и это ensureAuthenticated
- это просто название промежуточного программного обеспечения, которое я дал.Passport.js
что ты используешь - это круто.Я написал это, следуя вашему коду и покажу, как я это сделаю.Sidenote: Я обычно использую connect-flash для отображения сообщений об успехе / ошибке.npm install connect-flash
router.post('/', ensureAuthenticated, (req, res) => {
let errors = [];
if(!req.body.username){
errors.push({text:'Please add a username'});
}
if(!req.body.task){
errors.push({text:'Please add some tasks'});
}
if(errors.length > 0){
res.render('/add', {
errors: errors,
title: req.body.username,
details: req.body.tasks
});
} else {
const newTask = {
username: req.body.username,
tasks: req.body.tasks,
id: req.user.id
}
new Task(newTask)
.save()
.then(task => {
req.flash('success_msg', 'Your task has been added');
res.redirect('/tasks');
})
}
});