POST 请求未在 express 中得到处理
POST request does not get handled in express
我使用 ejs、express、nodeJS 和 mySQL。此代码给我一个错误:Cannot POST /search。
我认为 idex.ejs 和 app.js 很好,但我搞砸了 searchRouter ...
app.js
const express = require('express')
const app = express()
app.use('/static',express.static('static'))
app.set('view engine','ejs')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
const index = require('./router/indexRouter')
const upload = require('./router/uploadRouter')
const detail = require('./router/detailRouter')
const edited = require('./router/editedRouter')
const search = require('./router/searchRouter')
app.use("/",index)
app.use(upload)
app.use(detail)
app.use(edited)
app.use(search)
const port = 8080
app.listen(port, () => console.log(`Server up and running on port: ${port} !`))
searchRouter
const express = require('express')
const router = express.Router()
const dbCon = require('../database.js')
router.get('/search',(req,res) =>{
const searched = req.body.search
const query = `SELECT * FROM memes WHERE (title like "${searched} OR user like "${searched})"`
dbCon.query(query, (err, results) =>{
if(err) {
console.log(err)
}
console.log(results)
res.render('detail',{memes:results})
})
})
module.exports = router
如果您想处理对 /search
路由的 POST
请求,您必须使用 express 正确注册它。
像这样:
router.post('/search', (req, res) => {
/* ... */
});
请注意 - 在您显示的代码中,您只注册了上述路线上的 [=13=] 请求。 但是 (!) 从逻辑的角度来看,我认为 GET
请求 /search
路线更有意义。
我使用 ejs、express、nodeJS 和 mySQL。此代码给我一个错误:Cannot POST /search。 我认为 idex.ejs 和 app.js 很好,但我搞砸了 searchRouter ...
app.js
const express = require('express')
const app = express()
app.use('/static',express.static('static'))
app.set('view engine','ejs')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json())
const index = require('./router/indexRouter')
const upload = require('./router/uploadRouter')
const detail = require('./router/detailRouter')
const edited = require('./router/editedRouter')
const search = require('./router/searchRouter')
app.use("/",index)
app.use(upload)
app.use(detail)
app.use(edited)
app.use(search)
const port = 8080
app.listen(port, () => console.log(`Server up and running on port: ${port} !`))
searchRouter
const express = require('express')
const router = express.Router()
const dbCon = require('../database.js')
router.get('/search',(req,res) =>{
const searched = req.body.search
const query = `SELECT * FROM memes WHERE (title like "${searched} OR user like "${searched})"`
dbCon.query(query, (err, results) =>{
if(err) {
console.log(err)
}
console.log(results)
res.render('detail',{memes:results})
})
})
module.exports = router
如果您想处理对 /search
路由的 POST
请求,您必须使用 express 正确注册它。
像这样:
router.post('/search', (req, res) => {
/* ... */
});
请注意 - 在您显示的代码中,您只注册了上述路线上的 [=13=] 请求。 但是 (!) 从逻辑的角度来看,我认为 GET
请求 /search
路线更有意义。