Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

236
Vistas
Una página de EJS no se cargará a menos que reinicie mi servidor

Aquí hay uno para todos ustedes. FYI, todo esto es local en este momento.

Estoy construyendo un sitio de blog simple con ejs. Todas las páginas se pueden llamar y se cargan perfectamente... a excepción de mi página de publicación. Se detiene y luego, una vez que escribo 'rs' en mi terminal para iniciarlo (lo que debería borrar mi matriz de publicaciones de cualquier información), ¡se procesa! Para mí, esto no tiene sentido porque, ¿cómo sabría qué representar después de que se haya borrado la matriz?

Revisé el código un par de veces, pero pensé que me comunicaría con ustedes, buenas personas, para que me ayudaran.

¿Algunas ideas?

Aquí está mi código

...

 const express = require("express"); const bodyParser = require("body-parser"); const ejs = require("ejs"); const _ = require("lodash"); const app = express(); app.set('view engine', 'ejs'); app.use(bodyParser.urlencoded({extended: true})); app.use(express.static("public")); //global post array let posts =[]; //home logic app.get("/", function (req, res) { res.render("home", { startingContent:homeStartingContent, posts: posts} ); }); // about logic app.get("/about", function (req, res) { res.render("about", {aboutContent:aboutContent}); }); //contact logic app.get("/contact", function (req, res) { res.render("contact", {contactContent:contactContent}); }); //compose logic app.get("/compose", function (req, res){ res.render("compose"); }); app.post('/compose', function(req, res) { const postContent = { title: req.body.postTitle, content: req.body.postBody }; posts.push(postContent); res.redirect("/") }); //Routing Parameters app.get("/posts/:postName", function(req, res){ const requestedTitle = _.lowerCase(req.params.postName); posts.forEach(function(post){ const storedTitle = _.lowerCase(post.title); if (storedTitle === requestedTitle) { res.render("post", { title: post.title, content: post.content }); }; }); }); app.listen(3000, function() { console.log("Server started on port 3000"); });

...

mi código post.ejs

...

 <%- include('partials/header'); -%> <h1><%=title%></h1> <p><%=content%></p> <%- include('partials/footer'); -%>

..

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Eliminé el bucle del código y, en su lugar, creé dos constantes que satisfacían mis requisitos. Este código me lo sugirió un colega.

 app.get("/posts/:postName", function (req,res) { const requestedTitle = _.lowerCase(req.params.postName); //Put the req.params.postName constant into a new constant instead of putting it in a loop. const storedTitle = posts.filter((post) => ( _.lowerCase(post.title) === requestedTitle) ); //reroute to homepage if (storedTitle.length === 0) { res.redirect('/'); //otherwise render the page that was called } else { res.render('post', { title: storedTitle[0].title, content: storedTitle[0].content }) } })
about 4 years ago · Juan Pablo Isaza Denunciar

0

Intente primero terminar la iteración y encontrar (o no) la publicación relacionada. Después de eso, si no se encuentra, aún debe enviar algo como respuesta:

 app.get("/posts/:postName", (req, res) => { const requestedTitle = _.lowerCase(req.params.postName); const post = posts.find((post) => _.lowerCase(post.title) === requestedTitle); if (post) { res.render("post", { title: post.title, content: post.content }); } else { // of course, you must have error page for this to work res.status(404).render("error", { message: `Post "${requestedTitle}" not found`, }); } });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda