提问者:小点点

连接到路由的表单操作问题(Nodejs,Express)


我有一个使用Express的nodejs项目。 我遇到了一个问题,经过几个小时的努力,我终于弄明白了是什么问题,但我不知道该如何解决它。

我有一个表单要提交给数据库,但是表单action=“”没有找到正确的路由,我想。

在我的整个项目中,所有不在嵌套目录中的页面,比如下面的add-shop.ejs。 他们公布的数据很好。 我还对路由器做了测试

我将列出我的目录结构

| public
| models
         | shopModel.js
| routes
         | shop.js
         | index.js
| views
         | shop
                | add-shop.ejs
         | index.ejs
         | contact.ejs
| app.js

views/shop/add-shop.ejs中的“我的窗体”,并使用窗体操作

<form action="/add-shop" method="post" class="post-form">
  <form stuff to do>
</form>

我的app.js(只是路由设置,我在上面评论了一下)

const mainRoutes = require('./routes');
app.use(mainRoutes);

//This is the routes for shop route
const shopRoutes = require('./routes/shop.js');
app.use(shopRoutes);

我的路线:routes/shop.js

const express = require('express');
const router = express.Router();
const Shops = require('../models/shopModel.js');

router.get('/add-shop', (req, res) => {
    //getting the page successfully
});

router.post(('/add-shop', (req, res) => {
    //adding stuff not so successfully
}));

module.exports = router;

我一直得到404错误后发送的表单,它无法找到页面/添加商店,即使我发送表单从/add-shop页面! 是因为目录结构的原因吗?


共1个答案

匿名用户

您的代码中有一对括号太多了

router.post(('/add-shop', (req, res) => {
    //adding stuff not so successfully
}));

必须是

router.post('/add-shop', (req, res) => {
    //adding stuff not so successfully
});