繁体   English   中英

无法快速发布到服务器

[英]Cannot post to a server in express

我有一个快速应用程序,可以接收基本的用户输入数据。 我所有的获取路线都可以正常工作,但是当我向服务器提交发布请求时,即使我的views文件夹中有此页面,我也会在发布的URL上看到404。

app.js:

var express = require('express');
var path = require('path');
var consolidate = require('consolidate');
var bodyParser = require('body-parser');
var database = require('./database/database');
var Patient = require('./models/models').Patient;
var morgan = require('morgan');
var routes = require('./routes');
var app = express();

app.engine('html', consolidate.nunjucks);

app.set('view engine', 'html');
app.set('views', './views');

app.use(morgan('dev'));
//app.use(app.router);
app.use(routes);

app.use(bodyParser.urlencoded({ extended: false }));

app.listen(3055);

module.exports = app;

路线/ index.js:

const express = require('express');
var bodyParser = require('body-parser');
var Patient = require('../models/models').Patient;
const router = express.Router();

router.get('/', function(req, res, next){
    res.render('index.html');
});

router.post('/addsubject', function(req, res, next){
    Patient.create(req.body).then(function(patient){
        res.redirect('/profile');
    }).catch(function(err){
        if(error.name === "SequelizeValidationError"){
       } else {
       return next(err);
       }
   }).catch(function(error){
      res.send(500, error);
   });
});

router.get('/profile', function(req, res, next){
    res.render('./profile.html');
});

router.get('/addsubject', function(req, res, next){
    // .... do something here ..
});

module.exports = router;

我的index.html文件中有<form action="/addsubject" method="post">

index.html的:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>dabl Demographic</title>
  <body>
    <h2>Add Subject</h2>
      <form action="/addsubject" method="post">
        <label for="fname">First Name: </label>
        <input type="text" name="fname" id="fname">
        <br>
        <label for="sname">Second Name: </label>
        <input type="text" name="sname" id="sname">
        <br>
        <label for="dob">dob: </label>
        <input type="text" name="dob" id="dob">
        <br>
        <label for="laterality">Laterality: </label>
        <input type="text" name="laterality" id="laterality">
        <br>
        <button>Submit</button>
      </form>
  </body>
</html>

app.router之前使用body-parser中间件

...
app.use(bodyParser.urlencoded({ extended: false }));

app.use(morgan('dev'));
//app.use(app.router);
app.use(routes);
...

您将错误的功能(错误处理功能)传递给POST路由。

只需从函数中删除第一个“ err”参数即可,如下所示:

router.post('/addsubject', function(req, res, next){

问题解决了:

}).catch(function(err){
        if(error.name === "SequelizeValidationError"){
          next(err); //next(err); called inide this block no more 404 error
       } 

现在,用户输入已成功通过人体分析器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM