Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从express 3.x升级到express 4.x-Mongo会话存储_Node.js_Mongodb_Express_Connect - Fatal编程技术网

Node.js 从express 3.x升级到express 4.x-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);

我正在从迁移到

我在查找与新中间件配合使用的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
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')(会话)
调用中。