MySQL数据存储的ExpressJS会话不起作用

我是NodeJS和ExpressJS的新手,并试图build立与MySQL数据存储的会话function。 我已经按照如何调用它的文档,但是在我运行命令后,req.session是未定义的。 我已经validation,我有一个活动连接到MySQL数据库和一个常见的cookie的秘密,当我实例化cookie和会话。 我没有得到任何错误,但这里是控制台debugging输出…

terminal $ clear; DEBUG = express-mysql-session * npm start

node-app@0.0.0启动node_app

节点./bin/www

GET / login 200 7.458 ms – 249

express-mysql-session:log创build会话存储+ 0ms

express-mysql-session:log设置默认选项+ 3ms

POST / login 200 40.744 ms – 47

express-mysql-session:log设置到期时间间隔:900000ms + 7ms

express-mysql-session:log清除到期间隔+ 0ms`

我尝试启用debugging时运行此…

var pool = mysql.createPool(options);

我甚至没有看到一个查询甚至试图运行将会话添加到会话表。

这里是我的应用程序stream程:在我的main.js文件中,我捕获顶部的所有请求,并检查有效的会话,如果我没有find一个,我会显示login表单。

 app.get('/*',function(req, res){ if (!req.session) { var login = require('../js/login_functions'); res.send( login.getLoginForm() ); }}); 

login表单发布到/login,我validation用户名/密码validation,然后我创build一个会议与所需的session.js文件。 以下是session.js中的代码

 var config = require('../admin/config'); var express = require('express'); var app = module.exports = express(); var db = require('../js/database'); var session = require('express-session'); var MySQLStore = require('express-mysql-session')(session); module.exports = { createSession: function( req, callback ){ db.getConnection( function( connection ){ var session_store_options = { checkExpirationInterval: 900000,// How frequently expired sessions will be cleared; milliseconds. expiration: config.SESS_MAX_AGE,// 10 hours session expiration createDatabaseTable: false, connectionLimit: config.DB_CONNECTION_LIMIT, schema: { tableName: config.SESS_TABLE_NAME, columnNames: { session_id: 'session_id', expires: 'expires', data: 'user_data' } } }; var session_options = { key: config.SESS_COOKIE_NAME, secret: config.SESS_SECRET, store: new MySQLStore(session_store_options, connection), cookie: { maxAge: config.SESS_MAX_AGE }, genid: function(req) { return genuuid() // use UUID for session ID }, rolling: true, resave: false, saveUninitialized: false, }; if( config.ENV.toLowerCase() === 'prod' ){ session_options.cookie.secure = true; } app.use( session( session_options ) ); if( config.DEBUG ){ console.log( req.session ); } callback( session ); }); } }; 

当我在上面的底部运行console.log(req.session)时,它输出未定义的。 我是否错过了调用cookie和db store会话的步骤?

我发现会议没有被调用,我需要手动调用它通过分解像这样的会话调用

 sess = session_( session_options ); sess( req, res, function(err){ if(err) console.log( 'error:', err ); } ); app.use( sess ); 

而不是这个

 app.use( session( session_options ) );