2016-12-09 40 views
0

私はnode.jsが新しく、セッションの作成と保存に「express-session」を使用しようとしていますが、そのタイトルはバグです。私はgithubの起源コードをチェックしますが、何の質問も見つかりませんでした。 plsヘルプ、ありがとうございました。TypeError:未定義のプロパティ 'regenerate'を読み取ることができません

User.prototype.login = function (req, res, next) { 

    pool.getConnection(function (err, connection) { 
     // 获取前台页面传过来的参数 
     var user_name = req.param("user_name"), 
      password = req.param('password'); 

     // 建立连接,向表中插入值 
     var select = mysql.format(user_command.login, user_name); 
     connection.query(select, function(err, result) { 
      if(result) { 
       if(result[0].password === password){ 
        req.session.regenerate(function() { 
         if(err){ 
          res.json({ret_code: 2, ret_message:'登陆失败' }); 
         } 
         res.sessionID = user_name; 
         res.json({ret_code: 0, ret_msg: '登录成功'}); 
        }); 
       }else { 
        res.redirect('/login'); 
       } 
      } 
      // 释放连接 
      connection.release(); 
     }); 

    }); 

}

+0

'req.session.regenerate'関数はありません。あなたはそれを呼び出そうとしています。エラー。 – nicovank

+0

ありがとうございますが、この機能は "express-session"のドキュメントにあります。それが私が本当に理解できない理由です。リンク内の関数を検索することができます:https://github.com/talentAN/session –

+0

あなたのコードのどこかに 'app.use(session?'? – nicovank

答えて

0

Expressミドルウェアは、定義した順序で実行されます。あなたの問題はapp.use('./', routes)app.use(session(...))の前に設定したことです。

これを修正するには、2行目以降の最初の行を移動してください。

app.use(session({ 
    // ... 
}); 

app.use('./', routes); 
関連する問題