【问题标题】:Pass the values from a post method via routes using mvc style使用 mvc 样式通过路由从 post 方法传递值
【发布时间】:2023-02-14 19:42:32
【问题描述】:

发送带有用户名和密码的帖子表单时,我收到一条错误消息:Cannot POST /validateUser

我的表格如下所示:

<!DOCTYPE html>
<html>
  <head>
    <title>Login Form</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    
  </head>
  <body>
    <div class="contentDiv">
        <form action="/validateUser" method="post">
        <!-- user input-->
        Username:<br>
        <input type="text" name="username" placeholder="Username" required><br><br>
        Password:<br>
        <input type="password" name="password" placeholder="Password" required><br><br>
        
        <input type="submit" value="login">
        </form>
    </div>
  </body>
</html>  

在我的 app.js 我有这个

const express = require('express'),
app = express(),

app.set('view engine', 'ejs')

/*For getting form input*/
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));

const validationRoute = require('./routes/validationRoute')

/* Routes */
//app.post('/validateUser', validationRoute)
app.use('/validateUser', validationRoute)

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
    console.log(`Listening on Port: ${PORT}`);
})

我的 validationRoute 看起来像这样(尽管似乎我们从来没有走到这一步,因为错误在 app.js 中)

const express = require('express'),
router = express.Router(),
validationCon = require('../controllers/validationController')

router.get('/', validationCon.validateUser);

/*
router.get('/', (req, res) => {
    console.log("URL from validate: "+req.url)
}) */

module.exports = router;

我的 validationController 看起来像这样(尽管似乎我们从来没有走到这一步,因为错误在 app.js 中)

const { logic } = require("../dbLogic");

module.exports = {

    validateUser: async (req, res) => {
        const uName = req.uName, 
            pwd = req.pwd;
        const success = true//await logic.validateUser(uName, pwd);

        if(success) {
            //res.status(201).send('Login accepted');
            res.render('../views/pages/secret');
        }
        else
            res.status(400).send("Bad confidentials");
    }
}

重要信息!!!

而不是做:app.use('/validateUser', validationRoute)

如果做

app.use('/validateUser', function (req, res)  {
    const name = req.body.username

    console.log(name)
})

然后它运行良好,我可以访问用户名和密码。但我希望能够通过路由将其传递给控制器​​,以便我可以检查模型中的用户名和密码。

谁能看出这有什么问题:app.use('/validateUser', validationRoute)

【问题讨论】:

    标签: html node.js mongodb express mongoose


    【解决方案1】:

    尝试将 POST 请求处理程序添加到 validationRoute 路由器:

    router.post('/', (req, res) => {
        console.log("URL from validate: "+req.url, ' req.body: ', req.body)
    })
    

    它给出错误,因为没有任何类型的 HTTP 请求的处理程序。添加 router.use 的效果与您尝试添加 app.use 的效果相同。

    阅读更多:

    使用中间件

    https://expressjs.com/en/guide/using-middleware.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-08
      • 2011-12-09
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 1970-01-01
      相关资源
      最近更新 更多