2

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

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

4

1 回答 1

1

这听起来很异国情调,在fs.mkdir你的会议被抹去之后。(我发现了你的另一个 SO 问题)

但回到这个问题,这里有一个小代码片段,你可以如何使用会话(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的文档,并浏览express的示例

于 2012-12-22T22:15:27.233 回答