node.js - pretty - Jade-Motor de plantillas: cómo verificar si existe una variable
pug js strong (6)
¿No debería incluirse ''nombre de usuario'' en el objeto local?
Actualmente estoy usando Jade en un nuevo proyecto. Quiero mostrar una página y verificar si hay alguna variable disponible.
app.js
:
app.get(''/register'', function(req, res){
res.render(''register'', {
locals: {
title: ''Register'',
text: ''Register as a user.'',
}
});
});
register.jade
:
- if (username)
p= username
- else
p No Username!
Siempre me sale el siguiente error:
username is not defined
¿Alguna idea sobre cómo puedo solucionar esto?
Creé un middleware para tener el método isDefined
disponible en todas partes en mis vistas:
module.exports = (req, res, next) => {
res.locals.isDefined = (variable) => {
return typeof(variable) !== ''undefined''
};
next();
};
Esto debería funcionar:
- if (typeof(username) !== ''undefined''){
//-do something
-}
Si sabe de antemano que quiere una variable particular disponible, pero no siempre utilizada, he comenzado a agregar un valor "predeterminado" al objeto auxiliar.
app.helpers({ username: false });
De esta manera, aún puede hacer if (username) {
sin una falla catastrófica. :)
if ''username'' in this
p=username
Esto funciona porque res.locals es el objeto raíz en la plantilla.