Я пытаюсь создать приложение для регистрации пользователей с помощью ReactNative, Express.js и mySQL.У меня есть следующий код для функции входа в систему:
login = () => {
fetch('http://[myipaddress]/users', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
username: this.state.username,
password: this.state.password,
insert: false
})
})
.then((response) => response.json())
.then ((res) => {
if(res.success === true){
AsyncStorage.setItem('user', res.user);
this.props.navigation.navigate('Profile');
}
else{
alert(res.message);
}
})
.done();
}
Код для регистрации показан ниже.
userRegister = () =>{
fetch('http://[myipaddress]/users', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
username: this.state.username,
email: this.state.email,
password: this.state.password,
insert: true
})
})
.then((response) => response.json())
.then((responseJson) => {
alert(responseJson);
})
.catch((error)=>{
console.error(error);
});
}
Наконец, вот код вставки в users.js:
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'users'
});
router.post('/', function(req, res, next) {
var username = req.body.username;
var email = req.body.email;
var password = req.body.password;
var insert = req.body.insert;
console.log(username);
console.log(email);
console.log(password);
if (insert === false) {
connection.query(
"SELECT * FROM user WHERE username = ? AND password = ?",
[username, password], function (err, row, field) {
if (err) {
console.log(err);
res.send({ 'success': false, 'message': 'Could not connect' });
}
if (row.length > 0) {
res.send({ 'success': true, 'user': row[0].username });
} else {
res.send({ 'success': false, 'message': 'User not found' });
}
});
} else {
connection.query(
"INSERT INTO user(username, email, password) VALUES (username,email,password)",
function (err, result) {
if (err) {
res.send({ 'success': false, 'message': 'Could not connect' });
}
else{
res.send({ 'success': true, 'message': 'User created' });
}
});
}
});
module.exports = router;
Таким образом, в основном, если вставка ложна, это означает, что приложение пытается войти в систему и нужно только проверить, существует ли пользователь.Эта часть отлично работает.Однако, если insert - true, он должен вставить новую информацию о пользователе в таблицу.Но по какой-то причине он вставляет пустые значения, например: Снимок экрана
Первая вставка с именем пользователя John - это то, как она должна выглядеть, я сделал вставку вручную в phpMyAdmin.Остальные были вставки, сделанные через приложение, как вы можете видеть, что все значения пусты.Журналы консоли выводят значения просто отлично, поэтому я знаю, что они хранятся в переменных так, как должны, просто по какой-то причине они не вставляются.