Я пытаюсь отправить пользователей на две разные страницы в зависимости от того, успешен ли SQL-запрос или нет на экспресс-бэкэнде. Но только путь успеха показывает, когда я использую этот код.
Ранее у меня не было оператора await, но возникла та же проблема. Я не уверен, принимает ли сторона реакции сообщение об ошибке в качестве ответа, поскольку оно все еще входит в консоль из бэкэнда.
Вот метод во внешнем интерфейсе, который вызывается при отправке формы:
e.preventDefault();
console.log(this.state);
const newPost = {
pet_name : this.state.pet_name,
content : this.state.content,
content : this.state.content,
owner : 'testOwner',
email : 'test@gmail.com',
img_path : this.state.upload_image
};
//fetch instead of this to talk about in diss
try {
const postData = await axios.post('http://localhost:3306/reportpet', newPost)
.then(res=>console.log(res.data));
this.props.history.push('/postsubmitted')
} catch(error) {
console.log("Catch = ", error.response);
this.props.history.push('/posterror')
}```
The route on the backend is as follows:
```router.post('/reportpet', function (req, res) {
var pet_name = req.body.pet_name,
content = req.body.content,
date = req.body.date,
owner = req.body.owner,
email = req.body.email,
img_path = req.body.img_path;
const query = "INSERT INTO `posts` (`post_id`, `pet_name`, `content`, `date`, `owner`, `email`, `img_path`) VALUES (?, ?, ?, UTC_TIMESTAMP(),?, ?, ?);"
console.log(query);
connection.query(query, [pet_name, pet_name, content, owner, email, img_path ], function(err, result) {
(err)?res.send(err+'error was created'):res.json(result);
if (err) throw err;
console.log('rows inserted')
})
})
module.exports = router
Когда данные не добавляются в базу данных, я ожидаю, что пользователь будет отправлен в компонент ошибки. Когда он будет успешным, я ожидаю, что компонент успеха будет отображаться.