Node.js 从express 3.x升级到express 4.x-Mongo会话存储
我正在从迁移到 我在查找与新中间件配合使用的mongo会话存储时遇到问题 之前:Node.js 从express 3.x升级到express 4.x-Mongo会话存储,node.js,mongodb,express,connect,Node.js,Mongodb,Express,Connect,我正在从迁移到 我在查找与新中间件配合使用的mongo会话存储时遇到问题 之前: var express = require('express'); var mongoStore = require('connect-mongo')(express); // note parameter = express var session = require('express-session'); var mongoStore = require('connect-mongo')(session);
var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express
var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session
express3.x
作为一个依赖项,它与捆绑的中间件一起提供
为了在mongo数据库中持久化会话,需要使用事实上的中间件
世界新秩序:
var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express
var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session
现在有了express4.x
,connect
不再是依赖项
因此,几乎所有以前捆绑的中间件都被分解成单独的中间件,如上面列出的session
会话
采用存储
,但由于连接mongo
依赖于连接
,因此is与express 4.x
不兼容
问题:
var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express
var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session
我找不到有关迁移到
express 4.x
时使用哪个mongo会话存储的信息。有什么建议吗?connect mongo
仍然可以在express 4.x
中使用,但是,您现在可以通过会话而不是express
Express 3.x:
var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express
var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session
Express 4.x:
var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express
var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session
NPM:
var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express
var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session
遗憾的是,在撰写本文时,尚未将最新版本的connect mongo
部署到npm
编辑:最新版本的connect mongo
已部署到
您可以直接从以下位置下载最新版本:
或者,解决方法是创建临时对象:
{
session: session
}
并将其传递给mongo connect
:
var mongoStore = require('connect-mongo')({session: session});
我仍然有这个问题。获取此错误var Store=connect.Store | | connect.session.Store;^TypeError:无法读取module.exports处未定义的属性“Store”(/Users/vinitkumar/projects/javascript/node twitter/node_modules/connect mongo/lib/connect mongo.js:30:47)
@Vinit I收到相同的错误消息;请参阅答案的最后一行,它修复了该问题。@Vinit,听起来您是将express
传递到connect mongo
,而不是express session
?@SteveLorimer我以前是这样做的,但后来我将其更改为您的示例。还是让我再检查一遍。我可能错过了什么。connect mongo
已在npm上发布。现在,您可以将会话直接传递到require('connect-mongo')(会话)
调用中。