NodeJS undefined var获取错误

时间:2012-05-16 20:45:44

标签: node.js

我希望这是一个非常简单的问题,但我无法理解为什么不起作用。

我的问题是,我访问了一个可能未定义的变量。

这是功能:

  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中它必须工作......

有什么想法吗?谢谢!

4 个答案:

答案 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)

更短:

if (!(req.user || {}).userId){

还值得一提的是,lodash具有以下功能: https://lodash.com/docs/4.17.4#get

答案 2 :(得分:2)

NodeJS有一个Util类,它使用isNullOrUndefined()方法检查变量是null还是undefined

答案 3 :(得分:0)

以下代码更简单:

if (!req.user || !req.user.userId){ // redirect