我正在构建我的第一个node.js应用程序,并从身份验证开始。到目前为止,太好了,但是我似乎无法张贴表格。
我今天花费了大量时间试图弄清楚为什么它不会发布。我想我只是不了解我的代码有什么问题,我希望有人可以看看并指出它有什么问题,所以它如下...
我的app.js看起来像这样...
const express = require('express');
http = require('http');
path = require('path');
session = require('express-session');
app = express();
mysql = require('mysql');
bodyParser = require('body-parser');
db = require(__dirname, 'models/db')
var index = require('./routes/index');
var register = require('./routes/register');
app.use('/', index);
app.use('/register', register);
var engine = require('ejs-mate');
app.engine('ejs', engine);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(express.static(path.join(__dirname, 'public')));
var server = http.createServer(app);
var port = 8995;
server.listen(port);
module.exports = app;
我的register.js看起来像这样...
var express = require('express');
var router = express.Router();
var db = require(__dirname, 'models/db');
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
extended: false
}));
app.use(bodyParser.json());
router.get('/', function(req, res, next) {
res.render('register', { title: 'Register for a free account' });
});
router.post('/register', function(req, res) {
var input = JSON.parse(JSON.stringify(req.body));
var today = new Date();
var users = {
"first_name":req.body.first_name,
"last_name":req.body.last_name,
"email":req.body.email,
"password":req.body.password,
"username": req.body.username,
"created":today,
"modified":today
};
db.getConnection(function(err, connection) {
connection.query('INSERT INTO users SET ? ', users, function(err, result) {
connection.release();
if (err) { return console.error(err); }
});
});
res.redirect('/index');
});
module.exports = router;
最后,我的register.ejs看起来像这样...
<% layout("/layouts/default") -%>
<div class="signup-form">
<form method="post" action="/register" class="form-horizontal">
<div class="col-xs-8 col-xs-offset-4">
<h2>Sign Up</h2>
</div>
<div class="form-group">
<label class="control-label col-xs-4">Username</label>
<div class="col-xs-8">
<input type="text" class="form-control" name="username" required="required">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-4">Email Address</label>
<div class="col-xs-8">
<input type="email" class="form-control" name="email" required="required">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-4">Password</label>
<div class="col-xs-8">
<input type="password" class="form-control" name="password" required="required">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-4">Confirm Password</label>
<div class="col-xs-8">
<input type="password" class="form-control" name="confirm_password" required="required">
</div>
</div>
<div class="form-group">
<div class="col-xs-8 col-xs-offset-4">
<button type="submit" class="btn btn-primary btn-lg">Sign Up</button>
</div>
</div>
</form>
<div class="text-center">Already have an account? <a href="/">Login here</a></div>
</div>
当我尝试提交表单时,我不明白为什么会出现错误CAN POST / register的错误,因为我在我的app.post中指定了发布路线(“ / register”)。
答案 0 :(得分:1)
您已添加注册路由器以绑定到“ / register”链接...,因此路由寄存器中的所有链接都必须以/ register /开头。 如果您尝试发布/ register / register,它将起作用
app.use(‘/‘, register)
会工作