我已经创建了一个Node.js API,并正在使用Next.js对其进行请求
这是我的Node.js控制器。我正在使用快速验证器进行验证。
如果我正确填写了表格,它将正常工作,并且数据将按预期方式保存在mongo中。但是,当表单未正确填写时,我想将验证错误发送回客户端。如果在控制台中查看,可以在“网络”选项卡中看到错误。
exports.register = async (req,res) => {
// check if user exists in the database already
const emailExists = await User.findOne({ email: req.body.email });
if (emailExists) return res.status(400).send("Email already exists");
// hash password
const salt = await bcrypt.genSalt(10);
// hash the password with a salt
const passwordhash = await bcrypt.hash(req.body.password,salt);
// create new user
var user = new User({
name: req.body.name,email: req.body.email,password: passwordhash
});
try {
user = await user.save();
res.send({ user: user._id });
} catch {
res.status(400).send(err);
}
};
在Next.js中,这是发出http请求的代码
handleSubmit = event => {
const { name,email,password } = this.state;
event.preventDefault();
const user = {
name,password
};
try {
register(user);
} catch (ex) {
console.log(ex);
}
};
export const register = async user => {
const data = await http.post("http://localhost:8000/api/user/register",user);
console.log(data);
return data;
};
在控制台中,我只看到以下内容。因此,我正在执行的console.log无法正常工作。
POST http://localhost:8000/api/user/register 422 (Unprocessable Entity)
未捕获(承诺)错误:请求失败,状态码为422 在createError(createError.js:16) 在解决时(settle.js:17) 在XMLHttpRequest.handleLoad(xhr.js:59)