即使在 res.send 之后代码仍在执行
code is getting executed even after 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 值将被忽略,因此您可以在 return
之后写入任何内容,其目的只是停止函数执行。
所以,我正在开发一个完整的堆栈 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 值将被忽略,因此您可以在 return
之后写入任何内容,其目的只是停止函数执行。