仅在特定条件之后存储会话

时间:2014-08-13 15:02:23

标签: node.js mongodb session

如果我执行db.sessions.find({}),我们找到了一条记录,即使你执行了next()方法。

我需要在必要时创建数据库(会话存储)中的记录,而不是出现新请求。我希望在特定条件成立后存储mongodb中的任何信息。 我需要只在必要时创建数据库中的记录。

我创建了一个会话存储,我会像中间件一样使用它:

var sessionStore = express.session({
    store: new MongoStore({
      url: 'mongodb://localhost:27017/3xam9l3'
    }),
    secret: '1234567890QWERTY'
});

具体当我想要使用会话时,我会这样做:

app.get('/home', sessionStore, function(req, res) {
 ...
}

怎么做?

[]的

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但我的答案就是这里。 在应用程序中,我们可以使用:

app.use(session({secret: config.session.secret, saveUninitialized: true, resave: true}));

在中间件中,您可以使用以下条件:

var sessionStore = function(req, res, next){
   if (validate()){
     req.userName = "Jhon";
   }
   else{
     //do something else
   }
   next();
}

因此,如果validate()为true,则创建一个变量会话,如果不是,则执行其他操作。

答案 1 :(得分:0)

我达成了临时解决方案。无论如何,会话将在内存中创建,但只有在创建会话的特定属性时才会存储。

https://github.com/alvieirajr/connect-mongo/blob/master/lib/connect-mongo.js#L247