我正在做出反应和表达js的注册表单。一切都很好,但我想从服务器返回闪存error
和success
消息,但我不确定这样做的确切和简单方法是什么。其次,res.redirect('url')
给出 404。我需要帮助如下(代码的注释部分)
1)C1(呈现 Flash 消息)
2)C2(重定向错误)
3)C3(发送 Flash 消息)
Register.js
const handleSubmit = async e => {
e.preventDefault();
const options = {
method: "POST",
body: JSON.stringify({name,email,password}),
headers: {
"Content-Type": "application/json"
}
};
const res= await axios.post("/register", options);
return res;
};
return (
<>
<div className='wrapper'>
<div className='form-wrapper'>
<h5>{FlashMessage} </h5> //**C1**
//I need a error flash message here sent from express route
<Form ref={form} onSubmit={(e)=>{handleSubmit(e)}}>
{...}
<Button type="submit" className='button bg-success' >Submit</Button>
</Form>
</div>
</div>
</>)
服务器.js
app.post('/register', async (req,res)=>{
let {name,email,password} =JSON.parse(req.body.body)
if(password.length >=8 )
{
let hashpassword = await bcrypt.hash(password,10);
pool.query(`SELECT * FROM USERSDATA WHERE EMAIL= $1 `, [email],
(err,results) =>
{
if(err){
throw err;}
if(results.rows.length == 0)
{
console.log("inside insertion if-statement");
pool.query(`INSERT INTO USERSDATA (NAME,EMAIL,PASSWORD) VALUES ($1,$2,$3) RETURNING id`,[name,email,hashpassword],
(err,results) =>
{
console.log("JUST AFTER QUERYING DB");
if(err)
{
throw error;
}
res.redirect("http://localhost:3000/login") //C2
//This redirection giving 404 code
});
}
else{
req.flash("error","User Registration failed"); //C3
// Need to send above flash error message
res.locals.message= req.flash()
res.redirect("http://localhost:3000/register2")
//This redirection is giving 404 code}
}
);
}})