node.js - 即使使用返回,电子邮件仍在发送和数据捕获
问题描述
我正在验证一个 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();
});
如果您想通过该 return 语句阻止它,您需要将联系人创建移动到回调。
推荐阅读
- angular - 角度路由在页面刷新时重复 url
- r - 如何将 x 和 y 限制设置为相同的值?
- ssl - DigitalOcean Loadbalancer:流量较高时 TCP 连接速度较慢
- python - 如何将 attribute_mapped_collection 与 defaultdict(list) 一起使用?
- android - Android WorkManager 同时启动了太多工作
- jboss - IBM MQ JCA 资源适配器的日志记录
- reactjs - 如何在 Typescript 中使用 react-pdf 库
- android - proguard android上这个警告的-dontwarn规则是什么?
- java - 是否缓存了“预授权”注释的结果?
- go - 在Golang中将二进制值作为字符串转换为uint32