小编jb9*_*b90的帖子

并行请求到node.js,connect-mongo,会话被覆盖

在当前项目(一种商店系统)中,我使用带有expressJS的 node.js 和connect-mongo作为会话存储.在客户端,我在启动时使用单个请求来创建新会话,然后向node.js服务器发送多个并行请求.因为这些并行请求会更改会话,所以这些更改似乎会相互覆盖,当然,它们会更改会话的不同对象.

示例(所有3个请求同时启动):

  • 请求A将某些产品推送到阵列 req.session.productHist['abc']
  • 请求B将产品推送到 req.session.productHist['def']
  • 请求C需要一些时间,但不会更改会话

因为请求C在请求A和B之后完成,但在它们完成之前启动,它似乎session.productHist用请求C启动时保持的值覆盖(null).

我怎样才能解决这个问题?

更新:

一些带控制台输出的示例代码:

var url = require('url'),
    express = require('express'),
    MongoStore = require('connect-mongo');

var aDay = 24*60*60*1000;

var app = express.createServer();

app.configure(function(){
  app.use(express.cookieParser());
  app.use(express.session({
    secret: "secret",
    store: new MongoStore({ db: 'lmsCache' }),
    maxAge: aDay
    })
  );
  app.use(express.methodOverride());    app.use(express.bodyParser());
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
  app.use(app.router);
  app.use(express.logger());
});


function sendStringified(req, res, data) {
    data = JSON.stringify(data);
    if (req.url_query.callback) { data = req.url_query.callback + "(" + data …
Run Code Online (Sandbox Code Playgroud)

parallel-processing session mongodb node.js express

5
推荐指数
1
解决办法
1623
查看次数

标签 统计

express ×1

mongodb ×1

node.js ×1

parallel-processing ×1

session ×1