我希望这是一个非常简单的问题,但我无法理解为什么不起作用。
我的问题是,我访问了一个可能未定义的变量。
这是功能:
app.get('/loc', function (req, res) {
if (typeof req.user.userId === 'undefined'){
redirect('/');
} else {
var userId = req.user.userId;
Loc.getP([userId], function(promos) {
res.render('local/index', {
title: 'Local'
});
});
}
});
问题在于我正在检查var是否未定义。如果没有,我只想重定向到其他网址。如果已定义,则呈现用户的数据。很简单,但总是我尝试访问req.user.userId我得到以下内容:
500 TypeError: Cannot read property 'userId' of undefined
我尝试了我在互联网上找到的所有内容,但我认为在JS中它必须工作......
有什么想法吗?谢谢!
答案 0 :(得分:15)
如果定义了req.user,则应先检查然后执行userID检查。
if (req.user && typeof req.user.userId === 'undefined'){
或者你可以这样测试:
if (typeof req.user === 'undefined' && typeof req.user.userId === 'undefined'){
答案 1 :(得分:2)
答案 2 :(得分:2)
NodeJS有一个Util类,它使用isNullOrUndefined()方法检查变量是null
还是undefined
。
答案 3 :(得分:0)
以下代码更简单:
if (!req.user || !req.user.userId){ // redirect