JavaScript Express Basics Using Templates with Express Review Response.render

Michal Krasnodebski
Michal Krasnodebski
7,224 Points

Why is res.render('main', {posts: "posts"}); not correct?

This seems like it would be correct.

res.locals.posts = "posts"; should also work ... but causes task 1 to fail.

app.js
const express = require('express');
const posts = require('./mock/posts.json');

const app = express();

app.set('view engine', 'pug');
app.set('views', __dirname + '/templates')

app.get('/', (req, res) => {
  //res.locals.posts = 'posts';
  res.render('main', {posts: "posts"});
});

app.listen(3000, () => {
  console.log("The frontend server is running on port 3000!");
});
Jean Paul Giraldo
Jean Paul Giraldo
15,701 Points

posts is a variable (as defined on line 2) and "posts" is a string. By doing { posts: "posts" } you're setting the value of the property posts to be a string with the word "posts" in it.

What you really want is to pass the entire posts variable (that contains the posts.json in it) to the post property.