一尘不染

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

redis

我当前正在使用一个Web应用程序,每次fs.mkdir都调用此Web应用程序,请删除所有当前的Express会话,因此我需要一种方法来保留所有这些会话。我试图用connect-
mongodb和connect-
redis保留所有这些会话,但是都无效,nodemon总是说req.session是未定义的。我不知道该怎么做才能保留所有会话。

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


阅读 346

收藏
2020-06-20

共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的文档,并浏览express
示例

2020-06-20