我是后端编程的新手。这是我第一次使用node和express。我的帖子方法似乎不起作用,我不知道为什么。 这是我的用户代码:
var express = require('express');
var router = express.Router();
var multer = require('multer');
var upload = multer({dest: './uploads'});
var bodyParser = require("body-parser");
var User = require('../models/user');
router.use(bodyParser.urlencoded({ extended: false }));
router.use(bodyParser.json());
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
router.get('/registration', function(req, res, next) {
res.render('../views/registration', { title: 'registration' });
console.log('test1');
console.log(req.body);
});
router.post('/registration', function(req, res, next) {
console.log('test')
console.log(req.body);
console.log(req.body.name);
});
router.get('/registration2',(req, res) =>{
res.render('../views/registration2', { title: 'registration2' });
});
router.post('/registration2', function(req, res, next) {
console.log('test3')
console.log(req.body);
});
module.exports = router;
这是我的玉石形式:
form#form-registr(method='POST', action='/users/registration')
.form-row.col-12
#form1.col-lg-5
.form-group
label(for='inputName') Ім'я
input#name.form-control.px-3(name='name', type='text', aria-describedby='nameHelp', placeholder="Ім'я латиницею")
.form-group
label(for='inputSurname') Прізвище
input#surname.form-control.px-3(name='surname', type='text', aria-describedby='surnameHelp', placeholder='Прізвище латиницею')
.form-group
label(for='inputEmail1') Email
input#email1.form-control.px-3(name='email', type='email', aria-describedby='emailHelp', placeholder='Введіть email')
.form-group
label(for='inputEmail2') Підтвердити Email
input#email2.form-control.px-3(name='email2',type='email', aria-describedby='emailHelp', placeholder='Повторіть email')
.form-group
label(for='inputPassword1') Пароль
input#password1.form-control.px-3(name='passowrd', type='password', placeholder='Пароль')
.form-group
label(for='inputPassword2') Підтвердити пароль
input#password2.form-control.px-3(name='password2', type='password', placeholder='Повторіть пароль')
#form2.col-lg-5.offset-lg-1
h5.mt-3.mb-5 Оберіть категорії (щонайменше 4)
.row
.col-lg-6.col-md-6.col-sm-12
.form-check
input#checkArch.form-check-input(name='archi', type='checkbox', value='Архітектура ПЗ')
label.form-check-label(for='check1')
| Архітектура ПЗ
.form-check
input#checkBase.form-check-input(name='dbs',type='checkbox', value='Бази даних: розробка та адміністрування')
label.form-check-label(for='check2')
| Бази даних: розробка та адміністрування
.form-check
input#checkWeb.form-check-input(name='webdev', type='checkbox', value='Веб-розробка')
label.form-check-label(for='check3')
| Веб-розробка
.form-check
input#checkMobile.form-check-input(name='mobdev',type='checkbox', value='Mobile development')
label.form-check-label(for='check4')
| Mobile development
.form-check
input#checkGame.form-check-input(name='gamedev', type='checkbox', value='Game Development')
label.form-check-label(for='check5')
| Game Development
.form-check
input#checkDesign.form-check-input(name='design', type='checkbox', value='Дизайн (Web, UI, 3D)')
label.form-check-label(for='check6')
| Дизайн (Web, UI, 3D)
.form-check
input#check1C.form-check-input(name='1c', type='checkbox', value='Програмування: 1С')
label.form-check-label(for='check7')
| Програмування: 1С
.form-check
input#checkC.form-check-input(name='c++',type='checkbox', value='Програмування: С/С++')
label.form-check-label(for='check8')
| Програмування: С/С++
.form-check
input#checkPython.form-check-input(name='pyhton',type='checkbox', value='Програмування: Python')
label.form-check-label(for='check9')
| Програмування: Python
.col-lg-6.col-md-6.col-sm-12
.form-check
input#checkPHP.form-check-input(name='php', type='checkbox', value='Програмування: PHP')
label.form-check-label(for='check10')
| Програмування: PHP
.form-check
input#checkJava.form-check-input(name='java', type='checkbox', value='Програмування: JAVA')
label.form-check-label(for='check11')
| Програмування: JAVA
.form-check
input#checkProject.form-check-input(name='management', type='checkbox', value='Project Management')
label.form-check-label(for='check12')
| Project Management
.form-check
input#checkSyst.form-check-input(name='sysdamin', type='checkbox', value='Системне адміністрування')
label.form-check-label(for='check13')
| Системне адміністрування
.form-check
input#checkBezpeka.form-check-input(name='security', type='checkbox', value='ІТ безпека')
label.form-check-label(for='check14')
| ІТ безпека
.form-check
input#checkMereji.form-check-input(name='networks', type='checkbox', value='Мережеві технології')
label.form-check-label(for='check15')
| Мережеві технології
.form-check
input#checkServer.form-check-input(name='servertech',type='checkbox', value='Серверні технології')
label.form-check-label(for='check16')
| Серверні технології
.form-check
input#checkAuto.form-check-input(name='sysauto', type='checkbox', value='Системи автоматизації')
label.form-check-label(for='check17')
| Системи автоматизації
.form-check
input#checkTest.form-check-input(name='testing', type='checkbox', value='Тестування')
label.form-check-label(for='check18')
| Тестування
button#submit-registration.btn.d-block.float-right.mt-5.mb-3.text-white.px-4(type='submit') Далі...
所以来自get请求的console.log工作正常,但帖子中的日志没有。我不明白为什么。
我是新手,谢谢。
编辑:这是我的app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var passport = require('passport');
var expressValidator = require('express-validator');
var LocalStrategy = require('passport-local').Strategy;
var multer = require('multer');
var upload = multer({dest: './uploads'})
var flash = require('connect-flash');
var smongo = require('mongodb');
var mongoose = require('mongoose');
var db = mongoose.connection;
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// handle sessions
app.use(session({
secret:'secret',
saveUnitialized: true,
resave: true
}));
//passport
app.use(passport.initialize());
app.use(passport.session());
// validator
app.use(expressValidator({
errorFormatter: function(param, msg, value) {
var namespace = param.split('.')
, root = namespace.shift()
, formParam = root;
while(namespace.length) {
formParam += '[' + namespace.shift() + ']';
}
return {
param : formParam,
msg : msg,
value : value
};
}
}));
// express messages
app.use(require('connect-flash')());
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
app.use('/', indexRouter);
app.use('/users', usersRouter);
答案 0 :(得分:0)
我找到了解决方案的人。问题出在注册页面的Javascript文件中。我在那里有一个功能,当点击按钮时,它会重定向到另一个页面。