Uso ejs, express, nodeJS y mySQL. Este código me da un error: Cannot POST /search. Creo que idex.ejs y app.js están bien, pero estropeé el searchRouter...
aplicación.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} !`))enrutador de búsqueda
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 = routerSi desea manejar una solicitud POST a su ruta /search , deberá registrarla correctamente mediante express.
Como esto:
router.post('/search', (req, res) => { /* ... */ }); Tenga en cuenta: en el código que está mostrando, solo se registró para una solicitud GET en dicha ruta. Sin embargo (!) solo desde un punto de vista lógico, creo que una solicitud GET para una ruta /search tiene más sentido de todos modos.