javascript - 即使在 res.send 之后,代码也会被执行
问题描述
所以,我正在开发一个完整的堆栈 mern 应用程序,但是在身份验证页面中,即使在res.send
import User from "../models/user.js";
import { registerValidation } from "../validation.js";
const router = Router();
//!Hapijoi
//!
router.get("/register", async (req, res) => {
const { error } = registerValidation(req.body);
if (error) res.status(400).send(error.details[0].message);
const email = await User.findOne({ email: req.body.email });
if (email) return res.status(400).send("email exists");
const user = new User(req.body);
try {
const saveduser = await user.save();
res.send(saveduser);
} catch (error) {
console.log(error);
}
});
export default router;
所以,即使在行if (error) res.status(400).send(error.details[0].message);
和if (email) return res.status(400).send("email exists");
数据存储在数据库中之后,但我看到代码不会在res.send
我应该做什么之后执行,请帮助
解决方案
您可能希望return
防止进一步的代码执行,这可能导致不需要的行为,以及表明响应已发送的错误。所以写这个:
if (error) return res.status(400).send(error.details[0].message);
就像你在这里做的那样:
if (email) return res.status(400).send("email exists");
请注意,Express 回调的返回值被忽略,因此您可以在 之后编写任何内容return
,其目的只是停止函数执行。
推荐阅读
- php - 无法在现有 PDF 中添加水印图像
- python - for循环没有遍历列表中的所有元素
- python - 从字符串中拆分数字并取最大值
- asp.net - 重定向 URL ASP.net 核心,Google 搜索
- build - 使用自定义 gcc 安装时 glibc 'make check' 错误
- android - Android重度渲染的最佳实践是什么
- c - C比较2个双打返回错误的结果
- javascript - 更改内部 html 时初始化失败(谷歌应用脚本)
- join - @JoinTable() Nullable: False in typeorm
- ios - 如何在 Xcode swift 的 UITableview 单元格中显示当前股票价格?