JavaScript Express Basics Using Templates with Express Review Response.render

Thomas Tilton-Heylin
Thomas Tilton-Heylin
12,098 Points

I cannot "Pass the posts object to your template, naming it "posts"?

i have been all over looking for a linter and everything. Cannot figure out this posts of post thing.

the second argument needs to the posts object with posts attribute

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.render('index');
});

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

app.listen(3000, () => {
  console.log("The frontend server is running on port 3000!");
});

2 Answers

Adam Pengh
Adam Pengh
29,873 Points

You need to move the quotes around the object key, otherwise you are correct.

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

Can someone explain why its:

{ "posts" : posts }

and not

{ posts: "posts" }

i understand that we are passing in an object but because posts is the variable in pug should it not be something like:

{ posts: posts }