0

I am working with nodejs and experiencing some problems displaying variables. I understand JavaScript is asynchronous which might be the issue.

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;
}

Here is where the issue is qryUser is being display as null in the page being rendered.

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
  });
});
Jack
  • 804
  • 7
  • 18
crod
  • 235
  • 3
  • 5
  • 12

1 Answers1

0

Make sure that you have declared qryUser in scope of its use, e.g.:

var qryUser = {};

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

If you haven't then you might be getting ReferenceError: qryUser is not defined.

maerics
  • 151,642
  • 46
  • 269
  • 291
  • its not included but yes I have already declared it. The problem was that in the rendered page the variable is empty. – crod Jan 25 '17 at 21:07