Ответить два раза в Экспресс - PullRequest
0 голосов
/ 08 сентября 2018

Мой код реакции

<form action="/ContactUs/FormData" method="POST">
...         
</form>

и

handleSubmit(){
    fetch('/ContactUs/FormData')
    .then((results)=>results.json())
    .then((result)=>{
        if(result.name==='ErrorOccured'){
            this.setState({
                display: 'An Error Occured. Please try again!'
            });
        }
        else{
            this.setState({
                display: 'We have recorded your response '+result.name+ '. Please note your ID: '+ result.id
            });
        }
    })
}

Мой экспресс-код

app.post("/ContactUs/FormData",function(req,res){

}
formResponse.save((err,data)=>{ 
    if(err){
        res.write(JSON.stringify({"name":"ErrorOccured"}));
    }
    else{
        res.write(JSON.stringify(data));
    }
    res.redirect("/ContactUs");
});

Я хочу, чтобы при отправке данных в '/ ContactUs / FormData' они сохранялись с использованием Mongoose, а затем отображалась страница формы (два запроса ответа в одном методе post).

Как мне добиться этого, чтобы страница также отображалась и некоторые данные json также отправлялись в React.

1 Ответ

0 голосов
/ 08 сентября 2018

Экспресс не должен отображать страницу формы. ReactJS должен. Express должен просто ответить любыми данными, необходимыми React для отображения страницы формы.

Ваш сценарий должен быть:

  1. React отправляет данные формы
  2. Экспресс сохраняет его в базу данных
  3. После сохранения извлеките все данные, необходимые для отображения страницы формы
  4. В экспрессе объедините данные для страницы формы и сообщение об успехе / ошибке из операции сохранения в один объект JS.
  5. Экспресс должен отправить этот единственный объект в React через res.write (без перенаправления)
  6. React читает ответ, отображает любое сообщение об ошибке и / или отображает страницу формы , отображая данные, отправленные Express

Обратите внимание, что Express может возвращать любые данные, включая информацию для React, чтобы знать, какую страницу отображать дальше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...