Estoy aprendiendo node js y usando el motor pug-template para crear una página simple de inicio de sesión/administración para reservas de hotel.
Cuando un usuario inicia sesión, la página de índice debe ser diferente de un usuario que no ha iniciado sesión.
¿Debo hacer una condición en mi plantilla o una condición en mi ruta de inicio para generar un index_logged o index_not_logged?
Actualmente haciendo
app.get('/', (req, res) => { User.find({}, function(err, users) { if(err) { console.log(err); } else { res.render("index", { title: "Willkommen", users: users }); } }); });y en mi index.pug
extends layout block content if user h1 #{title} ul.list-group each user, i in users li.list-group-item a(href="/users/"+user._id)= user.name else .jumbotron h1 #{title} a(href="/users/login").btn.btn-primary AnmeldenEstoy usando una variable de usuario global en este momento.
Si su / público es muy diferente del / registrado en la sesión, entonces represente dos vistas pug separadas, por ejemplo:
app.get('/', (req, res) => { User.find({}, function(err, users) { if (err) { console.log(err); res.render("public_index"); } else { res.render("index", { title: "Willkommen", users: users }); } }); }); Pero si las dos páginas son muy similares con algunas partes diferentes, entonces represente la misma vista pero use if user (teóricamente puede tener esto en tantos lugares como desee en el archivo de vista) para mostrar el contenido relevante en consecuencia, como lo que tienes en index.pug en tu pregunta. La lógica de tu aplicación debe ser:
app.get('/', (req, res) => { User.find({}, function(err, users) { let Users = undefined; if (err) { console.log(err); } else { Users = users } res.render("index", { title: "Wilkommen", users: Users }); }); });