私はreactとexpress jsでサインアップフォームを作成しています。error
すべて問題ありませんが、サーバーからフラッシュとメッセージを返したいのですsuccess
が、正確で簡単な方法がわかりません。次に、res.redirect('url')
404 を指定します。ヘルプが必要です (コードのコメント セクション)
1)C1 (フラッシュ メッセージのレンダリング)
2)C2 (エラーのリダイレクト)
3)C3 (フラッシュ メッセージの送信)
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}
}
);
}})