#node.js #express #post #express-validator
Вопрос:
Я использую экспресс-валидатор, чтобы выяснить, соответствуют ли определенные пользовательские данные определенным ключевым словам. Если какой-либо из входных данных неверен, запрос POST в мою базу данных не должен быть сделан. Если все входные данные проходят, то СООБЩЕНИЕ должно пройти. Пользователь должен быть перенаправлен на /submitted
представление, когда входные данные являются допустимыми или недопустимыми.
Когда ни один из входных данных не является допустимым, запись не создается и база данных не обновляется (что хорошо, так как я не хочу, чтобы в базе данных были неверные данные), но проблема в том, что страница зависает и никогда не перезагружается (это нужно делать вручную).
У меня есть заявление if/else ниже, в котором говорится, что следует делать, если данные неверны. Консоль говорит об этом applicant.end()
и res.end()
не является функциями. Есть ли что-то еще, что я могу написать, что «остановит» запрос, но сделает перенаправление?
app.post(
"/application/submit",
[
check("_a1").matches("phrase-boundaries"),
check("_a2").matches("policy"),
check("_a3").matches("src-authenticity"),
check("_a4").matches("provide-phonics"),
], // each dropdown contains a value (i.e. ".a1" class has the value of "phrase-boundaries"), and those values need to match the text
(req, res) => {
const errors = validationResult(req);
const applicant = new Applicant(req.body);
if (!errors.isEmpty()) {
// if there are errors
console.log("applicant provided wrong answer(s)");
res.end() // The console says that applicant.end() and res.end() are not functions. Is there something else that I can write here that'll "stop" the request but do the redirect?
.then((result) => {
res.redirect("/submitted");
})
.catch((err) => {
console.log(err);
});
} else {
console.log("right answers");
}
applicant
.save()
.then((result) => {
res.redirect("/submitted"); // this works when all of the checks pass
})
.catch((err) => {
console.log(err);
});
}
);
Ответ №1:
Я обновил код следующим образом:
if (!errors.isEmpty()) {
console.log("applicant provided wrong answer(s)");
res.redirect("/submitted");
return;
} else {
console.log("right answers");
}
applicant
.save()
.then((result) => {
и страница теперь ведет себя так, как ожидалось. Перенаправление выполняется и return
делает это так, чтобы applicant.save()
этого не произошло.