Pregunta Jade - Motor de plantillas: cómo verificar si existe una variable


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?


75
2018-02-21 20:20


origen


Respuestas:


Esto debería funcionar:

- if (typeof(username) !== 'undefined'){
  //-do something
-}

99
2018-02-21 20:52



Más simple que el método de @ Chetan si no te importa probar valores falsy en lugar de valores indefinidos:

if locals.username
  p= username
else
  p No Username!

Esto funciona porque el nombre algo irónico locals es el objeto raíz para la plantilla.


86
2018-06-13 12:54



if 'username' in this
    p=username

Esto funciona porque res.locals es el objeto raíz en la plantilla.


10
2018-05-23 14:30



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, todavía puedes hacer if (username) { sin una falla catastrófica. :)


6
2018-06-13 13:45



¿No debería incluirse 'nombre de usuario' en el objeto local?

https://github.com/visionmedia/jade/tree/master/examples


1
2018-02-21 20:45



Creó un middleware para tener el método isDefined disponible en todas partes en mis puntos de vista:

module.exports = (req, res, next) => {
  res.locals.isDefined = (variable) => {
    return typeof(variable) !== 'undefined'
  };  
  next();
};

0
2018-04-24 15:38