我的堆栈:React前端,SQL数据库,Express中间件。 我具有在此处传递给后端的状态下的用户注册值:
handleSubmit = event => {
event.preventDefault();
const user = {
name: this.state.name,
email: this.state.email,
password: this.state.password
};
axios.post(`${REACT_APP_SERVER_URL}/api/users/register`, { user })
.then(res => {
console.log(res);
console.log(res.data);
})
}
我的服务器在这里响应:
router.post('/register', function(req, res) {
console.log(req.body)
db.User.findOne({
email: req.body.user.email
}).then(user => {
if(user) {
return res.status(400).json({
email: 'Email already exists'
});
}
else {
const newUser = new User({
name: req.body.user.name,
email: req.body.user.email,
password: req.body.user.password
});
bcrypt.genSalt(10, (err, salt) => {
if(err) console.error('There was an error', err);
else {
bcrypt.hash(user.password, salt, (err, hash) => {
if(err) console.error('There was an error', err);
else {
user.password = hash;
user
.create()
.then(user => {
res.json(user)
});
}
});
}
});
}
});
});
我已经记录了正在传递的用户,并且在前端读取了值,但是后端返回了一个空对象。我知道我很初级,但是我在做什么错了?
答案 0 :(得分:0)
您正在使用const newUser
创建对象,如果要创建新用途,您必须这样做
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: req.body.password
});
console.log(newUser)
console.log(newUser)
将显示您创建的用户数据
答案 1 :(得分:-1)
我最终改变了很多代码。但是我认为问题在于,我必须使用“ body-parser”将JSON值传递给SQL。因此,如果您遇到类似的问题,请阅读有关body-parser的信息。
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({
limit: '50mb',
extended: true,
parameterLimit: 50000
}));