node.js - res.status(400) 使我的链接 res.send("this message") 不会出现在客户端
问题描述
我遇到了这个问题,我试图使用我的 Node.js 服务器来回答 res.status(400).send("message")。
如果我删除 res.status,“消息”就会传到我的客户端。一旦我添加了 .status(400),发送部分就不包括在内。
客户端
const handleSubmit = (e) => {
e.preventDefault();
const data = {
user: userName,
email: email,
password: password,
};
axios
.post("http://localhost:4040/register", data)
.then((res) => console.log(res))
.catch((err) => console.log(err));
};
服务器端
exports.registerUser = async (req, res, next) => {
//Validater user data
const { error } = registerValidation(req.body);
if (error) return res.status(400).send(error.details[0].message);
//Check for existing user
const emailExist = await User.findOne({ email: req.body.email });
if (emailExist) return res.status(400).send("email already in use");
//Hashing password
const hashedPassword = await bcrypt.hash(req.body.password, 10);
//Upload to database
const user = new User({
user: req.body.user,
email: req.body.email,
password: hashedPassword,
});
try {
await user.save();
res.send("User created");
} catch (err) {
console.log(err);
res.status(400).send(err);
}
};
任何想法为什么在包含状态代码时我的消息会被删除?
最好的问候,奥斯卡
解决方案
当您添加状态 400 时,它将使用 axios 进入 catch 块,当您删除状态时,默认情况下它将被视为 200
所以当状态为 400 时,您需要通过阅读来处理 axios 的 catch 块上的消息err.response.data
查看有关 axios 如何处理超出 2xx 范围的错误和状态码的文档
推荐阅读
- r - purrr::map_int:无法将元素 1 从双精度值强制转换为整数
- java - 使用 API 在 HTTPS 服务器上访问 JIRA
- react-native - 如何创建地图视图
- python - 不小心跑了 git clean -d -f 需要找回python3.7
- mysql - 与最新的连接查询记录分组
- javascript - 在字典列表中列出值
- node.js - 如何解决:不支持选项 [servers] 不支持选项 [caseTranslate]
- python - 字节/字典到数据帧
- android - LoaderManager 抛出不兼容类型错误
- angular - 当我使用命令 ng new myprojectname 以角度创建新项目时出现此错误