我正在制作应用,我想要一个注册页面。这是html表单:
<form method="post" action="/register">
<p>Nom <input type='text' id="nom"></p>
<p>Prénom <input type='text' id="prenom"></p>
<p>Mot de passe <input type='text' id="mdp"></p>
<p>Email <input type='text' id="email"></p>
<input type="submit" value="Valider" id="envoyer">
</form>
我的server.js:
var express = require('express');
var async = require('async');
var bodyParser = require("body-parser");
var mysql = require('mysql');
var hostname = 'localhost';
var port = 3000;
var app = express();
////////////////
// MYSQL //
////////////////
const connection = require('./config/database');
connection.connect(function (err){
if (err) throw err;
console.log("Le serveur s'est bien connecté sur la base de donnée MYSQL")
});
////////////////
// ROUTING //
////////////////
var home = require('./app/routes/home');
var login = require('./app/routes/users/login');
var register = require('./app/routes/users/register');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.get('/', home);
app.get('/login/', login);
app.post('/register/', register);
////////////////
// SERVER //
////////////////
app.listen(port, hostname, function(){
console.log("Mon serveur fonctionne sur http://"+ hostname +":"+port);
});
我的register.js:
module.exports = (function() {
'use strict';
const connection = require('../../../config/database');
var router = require('express').Router();
var User = require('../../models/User');
router.get('/register', function(req, res) {
console.log(req.body.firstname)
User.addUser(req.query.firstname, req.query.lastname, req.query.email, req.query.password,function(err,rows){
if(err)
{
return res.json({
'code':'500',
'success':'false',
'msg': err
});
}
else{
return res.json({
'code':'200',
'success':'true',
'msg':'Bonjour '+rows[0].firstname+', vous avez bien été créé'
});
}
});
});
return router;
})();
我的user.js:
addUser:function(firstname,lastname,email,password,callback){
return db.query
(
"INSERT INTO `users` VALUES (?,?,?,?)"
+ [firstname,lastname,email,password],
callback
);
},
但是当我在表单中输入一些值时,我收到此错误:
The requested URL /register was not found on this server.
我不知道我遗失的地方有什么想法吗?
答案 0 :(得分:0)
首先,您应该在定义路线时删除尾部斜杠:
app.post('/register', register);
在server.js文件中,您已经将/ register路由建立为POST路由,并将处理程序设置为register.js模块。请求数据直接发送到该功能,因此无需在其中设置新路由。以下是register.js的示例:
'use strict';
const connection = require('../../../config/database');
const User = require('../../models/User');
module.exports = function(req, res) {
console.log(req.body.firstname);
User.addUser(req.body.firstname, req.body.lastname, req.body.email, req.body.password,function(err,rows){
if(err) {
return res.status(500).json({
'code':'500',
'success':'false',
'msg': err});
} else {
return res.status(200).json({
'code':'200',
'success':'true',
'msg':'Bonjour '+rows[0].firstname+', vous avez bien été créé'});
}
});
});
};
此外,在创建表单输入时,必须在每个表单上包含一个名称,以便服务器知道哪个属性是哪个。
所以在你的'first name'输入中,将input元素的name属性设置为'firstname'。然后,当服务器收到请求时,您可以访问req.body中的“firstname”。
您的HTML输入应如下所示:
<input type='text' name="firstname" id="someid">
然后在您的register.js中,您可以像这样访问该变量:
req.body.firstname
答案 1 :(得分:0)
addUser:function(firstname,lastname,email,password,callback){
return db.query
(
"INSERT INTO `users` VALUES (?,?,?,?)"
+ [firstname,lastname,email,password],
callback
);
},
错误来自语法错误“INSERT INTO”之后有一个“+”我应该删除:
addUser:function(firstname,lastname,email,password,callback){
return db.query
(
"INSERT INTO `users` VALUES (?,?,?,?)"
[firstname,lastname,email,password],
callback
);
},
谢谢你的答案!