//jshint esversion:6 const express = require("express"); const bodyParser = require("body-parser"); const ejs = require("ejs"); const { redirect } = require("express/lib/response"); const { forEach } = require("lodash"); const homeStartingContent = "Lacus vel facilisis volutpat est velit egestas dui id ornare. Semper auctor neq"; const aboutContent = "Hac habitasse platea dictumst vestibulum rhoncus est pellentesque.."; const contactContent = "Scelerisque eleifend donec pretium vulputate sapien."; let posts = []; const app = express(); app.set('view engine', 'ejs'); app.use(bodyParser.urlencoded({extended: true})); app.use(express.static("public")); app.get("/", function(req, res){ res.render("home",{startingContent:homeStartingContent,posts:posts}); }) app.get("/about", function(req, res){ res.render("about",{aboutContent:aboutContent}); }) app.get("/contact", function(req, res){ res.render("contact ",{contactContent:contactContent}); }) app.get("/compose", function(req, res){ res.render("compose"); }) app.post("/compose", function(req,res){ const post = { title:req.body.postTitle, content:req.body.postBody }; posts.push(post); console.log(posts) res.redirect("/"); }) app.get("/posts/:postName",function(req, res){ const requestedTitle = req.params.postName; posts.forEach(function(post){ console.log(requestedTitle); const storedTitle =req.body.postTitle; console.log(storedTitle); if(storedTitle===requestedTitle){ console.log("match found"); } else{ console.log("Not a match"); } }); }); app.listen(3000, function() { console.log("Server started on port 3000"); }); Tengo un problema con app.get("/posts/:postName",function(req, res){ y const storedTitle =req.body.postTitle; el problema es cada vez que ejecuto http://localhost:3000/posts/ Prueba en el navegador Se supone que debo obtener el resultado como coincidencia encontrada, pero cuando registro el título almacenado en la consola para depurar, lo obtengo como indefinido en lugar de Prueba .
En lugar de const storedTitle =req.body.postTitle; debe usar const storedTitle = post.title;
Obtiene undefined en el registro debido a las siguientes líneas:
const storedTitle =req.body.postTitle; console.log(storedTitle); Porque las solicitudes GET no tienen body .
Cambie esas líneas de la siguiente manera:
const storedTitle = post.title; console.log(storedTitle); Supongo que es un error de copiar/pegar de /compose handler :-)
¡Buenos días!
No puede usar req.body en una solicitud GET. Debería usar POST app.post("/posts/:postName",....
o
const storedTitle =req.query.postTitle;