我正在验证一个reCaptcha令牌,并有目的地使其测试失败。 我可以在控制台看到,我收到了我返回的错误,但电子邮件仍在发送,表单数据仍在数据库中捕获。 我想,既然我使用的是return,它就会停止所有的事情,而不是发送电子邮件/写到数据库?
request(verifyUrl, (error, response, body) => {
body = JSON.parse(body);
console.log(body);
if (body.success !== undefined && !body.success) {
return res.status(422).json({ errors: "Failed captcha verification" });
}
});
let contact = new Contact({
firstName: firstName,
lastName: lastName,
email: email,
comments: comments,
});
contact = await contact.save();
// send email code
我尝试了一个if else,但是得到了关于不是异步函数的错误
那是一个异步调用。 您传递给request的回调只有在整个函数体(包括联系人创建)执行之后才会执行。
request(verifyUrl, async (error, response, body) => {
body = JSON.parse(body);
console.log(body);
if (body.success !== undefined && !body.success) {
return res.status(422).json({ errors: "Failed captcha verification" });
}
let contact = new Contact({
firstName: firstName,
lastName: lastName,
email: email,
comments: comments,
});
contact = await contact.save();
});
如果希望通过返回语句阻止联系人创建,则需要将联系人创建移动到回调中。