Я пытаюсь создать очень простое приложение с полным стеком с помощью React и Node.У меня проблемы с получением интерфейса для отправки данных на сервер.Я получаю POST http://localhost:4000/ 500 (Internal Server Error)
в моей консоли.Что мне нужно сделать, чтобы отправить данные, отправленные пользователем на сервер, чтобы я мог сохранить их в базе данных?
Код моей реакции
class App extends React.Component {
constructor() {
super();
this.state = {text: ''}
this.handleSubmit = this.handleSubmit.bind(this);
this.handleChange = this.handleChange.bind(this);
}
handleSubmit(e) {
e.preventDefault();
fetch('http://localhost:4000/users', {
method: "POST",
headers: {"Content-Type": "application/json"},
body: this.state.text // trying to send this text to the server
})
.then((response) => {
console.log('success writing to server', response)
})
.catch((err) => {
console.log('error writing to server', err);
})
}
handleChange(e) {
this.setState({
text: e.target.value
})
}
render() {
return (
<form onSubmit={this.handleSubmit}>
<input onChange={this.handleChange} type="text" placeholder="Name" ref="name" />
<input type="submit" />
</form>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
Код моего сервера:
const express = require('express');
const mysql = require('mysql');
const port = process.env.port || 4000;
const app = express();
let db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'my_db'
})
app.use(express.static('public'));
app.post('/users', function (req, res) {
console.log(req.body) // undefined
// I would have thought that req.body.text would work but req.body is undefined
db.query(`INSERT INTO users (user) VALUES ("${req.body.text}")`, function (err, result) {
if (err) {
console.log('error inserting into database', err.sqlMessage);
} else {
console.log('successful insertion into database', result);
}
});
res.sendStatus(201);
});
app.listen(port, 'localhost');