iam 尝试使用 React 在数据库中注册用户,但 iam 收到 422(不可处理实体)错误。它在邮递员中工作正常
我的代码
client
const postData = async (e) => {
e.preventDefault();
const { name, RegestrationNo, password } = user;
const res = await fetch("/register", {
method: "POST",
headers: {
"content-type": "application/json",
},
body: JSON.stringify({
name,
RegestrationNo,
password,
}),
});
const data = res.json();
if (data.status === 422 || !data) {
window.alert("registration failed");
} else {
window.alert("registered successfully");
}
navigate("/login");
};
server
const UserRegistration = (req, res) => {
const { password, RegestrationNo, name } = req.body;
if (!name || !password || !RegestrationNo) {
return res.status(422).json({ err: "not filled" });
}
User.findOne({ RegestrationNo: RegestrationNo })
.then((user) => {
if (user) {
return res.status(422).json({ err: "user already exists" });
}
const newuser = new User({ name, password, RegestrationNo });
newuser
.save()
.then(() => {
res.status(200).json({ message: "Register successfully" });
})
.catch((err) => res.status(500).json({ err: "failed to register" }));
})
.catch((err) => {
console.log(err);
});
};
请帮忙。
当我使用 React 注册用户时,iam 收到错误 422(无法处理的实体)
错误。
1- 字段名称不匹配:验证前端发送的字段名称与后端期望的字段名称完全匹配。即使区分大小写的细微差别也可能导致问题。
2- 验证逻辑:仔细检查后端路由处理程序中的验证逻辑,以确保其正确处理所有可能的情况。 422错误表示未满足后端指定的某些条件。
3- 数据结构:确认前端发送的数据结构与后端期望的结构匹配。确保数据作为 JSON 对象发送,其中包含姓名、电子邮件、密码和 Cpassword 等键。
4- 中间件问题:如果有任何中间件函数在请求正文到达后端路由处理程序之前对其进行处理,请确保它们不会导致数据出现任何冲突或问题。
5-控制台日志记录:利用后端路由处理程序中的 console.log 语句来调试和了解数据流。记录收到的 req.body 可以深入了解后端正在接收哪些数据。
6- 错误响应:检查 JSON 响应中返回的错误消息是否准确反映遇到的问题。提供有意义的错误消息有助于调试和理解问题的根本原因。