使用nodejs-express和mysql创建表单时,无法POST/users/create错误



我正在创建一个表单并获取用户数据,但在填写详细信息并提交表单后,它显示无法POST/users/create。试过了,但什么也没找到。

app.js文件-

const express = require('express');
const db = require("./database");
const app = express();
const port = 3000;
app.use(express.urlencoded({extended:false}))
app.set("view engine", "ejs");
app.get("/",(req, res) => {
res.render("users");
})
app.post('/create', (req, res) => {
const userDetails = req.body;
const sql = 'INSERT INTO users SET ?';
db.query(sql, userDetails,(err, data) => {
if (err) throw err;
console.log("user data inserted sucessfully");
});
res.redirect('users')
});
app.listen(port, () => {
console.log(`server created successfully ${port}`);
})

users.js文件-

<div class="user-detail">
<h2>Create user data</h2>
<form action="/users/create" method="POST">
<label>Full name</label>
<input type="text" placeholder="Enter full name" name="fullName" required>
<input type="email" placeholder="Enter Email Address" name="emailAddress" required>
<input type="text" placeholder="Enter city name" name="city" required>
<input type="text" placeholder="Enter country name" name="country" required>
<button type="submit">Submit</button>
</form>
</div> 

输出-数据库创建成功服务器成功启动

如果我错了,请纠正我,但您的路线不匹配。在您的ejs文件中,您写道:<form action='users/create'....>在你的app.js文件中,你的帖子请求中的路径是:

app.post('/create', (req, res) => {...}

您必须在前端调用后端定义的相同端点。

如果您在/users路径上安装app,它就会工作:

express().use("/users", require("./app.js")).listen(80);

但如果你运行它的话就不行了;"独立":

require("./app.js").listen(80);

最新更新