0

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

我的问题,我访问了一个无法定义的变量。

这是功能:

  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

4 回答 4

15

您应该首先检查是否定义了 req.user,然后检查您的用户 ID。

if (req.user && typeof req.user.userId === 'undefined'){

或者,您可以像这样测试它:

if (typeof req.user === 'undefined' && typeof req.user.userId === 'undefined'){
于 2012-05-16T20:55:11.173 回答
2

更短:

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

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

于 2015-02-19T18:18:30.593 回答
2

NodeJS 有一个 Util 类,它具有isNullOrUndefined()方法来检查变量是否为nullundefined

于 2015-12-30T19:42:31.613 回答
0

以下代码更简单:

if (!req.user || !req.user.userId){ // redirect
于 2012-05-17T07:08:25.850 回答