node.js - 从 express 3.x 升级到 express 4.x - Mongo session 存储

标签 node.js mongodb express connect

我从 express 3.x 迁移至express 4.x

我在寻找与新的 session 兼容的 mongo session 存储 时遇到问题中间件。

以前:

express 3.xconnect作为依赖项,它又附带捆绑的 session中间件。

为了在 mongo 数据库中持久化 session ,事实上的中间件是 connect-mongo .

世界新秩序:

现在使用 express 4.xconnect 不再是依赖项。

因此,几乎所有以前捆绑的中间件都被分解成单独的中间件,例如上面列出的 session

session 需要一个 store,但由于 connect-mongo 依赖于 connect,is 不兼容express 4.x.

问题:

我找不到关于在迁移到 express 4.x 时要使用的哪个 mongo session 存储的信息。有什么建议吗?

最佳答案

connect-mongoexpress 4.x 中仍然有效,但是,您现在传入 session 而不是 express

Express 3.x:

var express = require('express');
var mongoStore = require('connect-mongo')(express); // note parameter = express

Express 4.x:

var session = require('express-session');
var mongoStore = require('connect-mongo')(session); // note parameter = session

NPM:

很遗憾,在撰写本文时,最新版本的 connect-mongo 尚未部署到 npm。

编辑:最新版本的 connect-mongo 已部署到 npm

您可以直接从 github 下载最新版本

或者解决方法是创建一个临时对象:

{
    session: session
}

并将其传递给 mongo-connect:

var mongoStore = require('connect-mongo')({session: session});

关于node.js - 从 express 3.x 升级到 express 4.x - Mongo session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23005971/

相关文章:

javascript - MongoDB 按日期查询并按距离排序(Mongoose + Express App)

node.js - Node 'extends layout'不显示 block 内容

javascript - WebStorm 中 JavaScript 的元素未导出警告

node.js - Stripe 将支付方式添加到试用订阅,然后验证信用卡

mongodb - 具有不同文件夹名称的 mongodump

node.js - 设置express js静态文件并将它们包含在模板文件中

javascript - Express.js 中的“router.get”与 'router.route.get'

mysql - Sequelize 多对多关系不会作为外键保存在数据库中

string - MongoDb 变量到字符串

regex - 在 Mongo 中组合 $regex 和 $or 运算符