Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

234
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!