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 路线更有意义。