2017-01-25 5 views
0

Я работаю с nodejs и испытываю некоторые проблемы с отображением переменных. Я понимаю, что JavaScript является асинхронным, что может быть проблемой.Почему моя переменная не установлена ​​

function getQryUser(user) { 
    if (user.chkUserStatus) { 
    if (user.lWaterLabID == 0) { 
     qryUser.sLabName = "Site Admin"; 
     qryUser.sLabID = 0; 
    } else if (user.lWaterlabID == -9999) { 
     qryUser.sLabName = "Uber Admin"; 
     qryUser.sLabID = "0"; 
    } else { 
     request.query("Some Query", function(err, rows) { 
     if (err) { 
      throw err; 
     } else { 
      console.log('user found', rows); 
      setValue(rows[0]); 
     } 
     }); 
    } 
    } 
} 

function setValue(value) { 
    qryUser = value; 
} 

Здесь проблема заключается в том, что qryUser отображается как null на отображаемой странице.

router.get('/secure', function(req, res) { 
    console.log('find user', user); 
    getQryUser(user); 
    console.log('hello from get route', qryUser); 
    res.render('secure/index',{ 
    user: user, 
    qryUser: qryUser 
    }); 
}); 
+0

Является ли 'qryUser' глобальной переменной? – Jack

ответ

0

Убедитесь, что вы объявили qryUser в сферу его применения, например .:

var qryUser = {}; 

function getQryUser(user) { 
    if (user.chkUserStatus) { 
    if (user.lWaterLabID == 0) { 
     qryUser.sLabName = "Site Admin"; 
     // ... 
} 

Если нет, то вы могли бы получать ReferenceError: qryUser is not defined.

+0

его не включили, но да, я уже объявил это. Проблема заключалась в том, что на отображаемой странице переменная пуста. – crod

Смежные вопросы