处理并保留node.js / express会话

时间:2012-12-22 20:08:57

标签: javascript node.js express redis

我目前正在开发一个网络应用,这个网络应用每次调用fs.mkdir时,删除所有当前的快速会话,所以我需要一种方法来保留所有这些会话。我试图用connect-mongodb和connect-redis保持所有这些会话,但是两者都不起作用,nodemon总是说req.session是未定义的。我不知道我要做什么来保持所有的会议。

我需要一种方法来保留所有会话,不要在执行fs.mkdir时丢失它们,并为它编写教程,因为我还没有找到任何好的和完整的教程,任何人都可以!在Stackoverflow中,我正在阅读所有与此相关的内容,但是一切正常!请帮忙!

1 个答案:

答案 0 :(得分:1)

这听起来很奇特,在fs.mkdir你的会话被删除之后。 (我发现了你的其他问题)

但回到这个问题,这里有一些代码片段,你可以如何使用会话(redis)。

var express = require('express')
  , fs = require('fs')
  , http = require('http')
  , RedisStore = require('connect-redis')(express)
  , sessionStore = new RedisStore()
  , app = express()
  ;

app.configure(function(){
  app.set('port', 3000);
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('secret'));
  app.use(express.session({
    store: sessionStore
  }));
  app.use(express.static(__dirname + '/public'));
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.get( '/', function(req, res){
  res.setHeader("Content-Type", "text/html");
  console.log( req.session );
  console.log( '------------------------' );
  res.end( 'root' );
});

app.get( '/dir/:id', function(req, res){
  console.log( req.session );
  console.log( '------------------------' );

  fs.mkdir( req.params.id );
  if ( req.session.dirs === undefined )
    req.session.dirs = [];
  req.session.dirs.push( req.params.id );

  console.log( req.session );
  console.log( '------------------------' );

  res.setHeader("Content-Type", "text/html");
  res.end( 'dir' );
});


server = http.createServer(app).listen(3000);

您应该阅读express的文档,然后浏览快递的examples