我正在使用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 :(得分:0)
确保您已在其使用范围内声明qryUser
,例如:
var qryUser = {};
function getQryUser(user) {
if (user.chkUserStatus) {
if (user.lWaterLabID == 0) {
qryUser.sLabName = "Site Admin";
// ...
}
如果还没有,那么你可能会得到ReferenceError: qryUser is not defined
。