Javascript 如果会话不可用,则重定向node.js

Javascript 如果会话不可用,则重定向node.js,javascript,mysql,node.js,Javascript,Mysql,Node.js,我正在尝试为我的路由编写代码,如果session.user_id未定义,将重定向回主页。由于某些原因,重定向无法执行,mysql条件被触发,服务器崩溃,因为session.user_id未定义,并且没有该数据无法加载游戏 router.get('/game', function(req,res) { console.log(req.session.user_id); if (req.session

我正在尝试为我的路由编写代码,如果session.user_id未定义,将重定向回主页。由于某些原因,重定向无法执行,mysql条件被触发,服务器崩溃,因为session.user_id未定义,并且没有该数据无法加载游戏

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });
是否有一种方法可以在所有路由上使用通用重定向,如果会话不可用,则重定向回登录

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });

我假设值是
未定义的
,而不是
“未定义的”
(这是一个包含单词“未定义”的字符串):

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });
您应该使用:
if(req.session.user\u id==未定义)

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });
if(type of req.session.user\u id==“未定义”)

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });
除此之外,通常最好有一个检查用户会话的中间件功能。这样,您就可以在所有路由中插入对该中间件的调用,这需要用户登录:

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });
router.get('/game', checkUserSession, function(req,res) {
  // Your code here
});

function checkUserSession( req, res, next )
{
    if( req.session.user_id )
    {
        next();
    }
    else
    {
        res.redirect('/homepage');
    }
}//checkUserSession()
添加一个函数来处理身份验证检查,然后向路由器注入中间件

                router.get('/game', function(req,res) {

                console.log(req.session.user_id);

                if (req.session.user_id === "undefined") {

                res.redirect('/');

                }else {

                var condition = 'userId = ' + req.session.user_id;

                projectX.allGameData(condition, function(data){

                var hbsObject = {heroes : data, logged_in: req.session.logged_in, isUser: req.session.isUser, isAdmin: req.session.isAdmin}

                res.render('game', hbsObject);

                });

                };

                });