javascript - 连接到路由的表单操作问题(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 页面发送表单,它也找不到页面 /add-shop!是因为目录结构吗?
解决方案
你的代码中有太多的括号
router.post(('/add-shop', (req, res) => {
//adding stuff not so successfully
}));
需要是
router.post('/add-shop', (req, res) => {
//adding stuff not so successfully
});
推荐阅读
- hazelcast - Hazelcast 3.8.2 中的内存泄漏
- git - 有什么方法可以在同一个文件夹中拥有版本化和非版本化的 .gitignore?
- php - PHP 从单个列中获取自定义标签并将它们分开
- python - 变分自动编码器只是输出训练集的平均值
- angular - TypeError:无法读取 null 的属性“canDeactivate”
- javascript - 用于从 url 中提取不带扩展名的文件名的正则表达式
- javascript - 将 JavaScript 函数作为函数指针传递给 C++ dll
- bash - 递归替换多个文件中的字符串
- python - sqlite 插入或忽略不起作用
- node.js - Angular 2+ 和 Node/Express 的 CORS 最佳实践