0

I want to stack and pass over variables from a router to another and stack it so I chose express-session. Here is plan I designed.

  1. savinig req.body values to req.session.cAttr obj.
  2. move to next page and add other values(each views are connected)
  3. at the last view, save values into mongoDB

this is part of app.js

 // router Setup
app.use('/', routes);
//app.use('/users', require('./routes/users'));

app.use(session({
    resave: false,
    saveUninitialized: false,
    secret: '~~~~',
    store: new MongoStore({
        mongooseConnection: mongoose.connection
    })
}));
// csurf Setup
app.use(csurf({cookie:false}));
app.use(function(req, res, next){
    res.locals._csrfToken = req.csrfToken();
    next();
});
//  passport
var passport = require('./config/passport');
app.use(passport.initialize());
app.use(passport.session());

//  session
app.use(function(req, res, next){
    if(req.user){
        switch (req.user.selcUniv) {
            case 1 : req.user.stringUniv = 'arg1';
                break;
            case 2 : req.user.stringUniv = 'arg2';
                break;
            case 3 : req.user.stringUniv = 'arg3';
                break;
        }
    }
    res.locals.userSession = req.user;
    next();
});

router

router.post('/newClassSubmit/:stage', function(req, res, next){
var sess = req.session;
switch (req.params.stage) {
    case 'stage_1' :
        sess.cAttr = {
            var1: req.body.D1,  //I changed key & attr name for a readability
            var2: req.body.D2
        }
        console.log(cAttr);
        res.render('newStage-2');
        break;
    case 'stage_2' :
        sess.cAttr = {
            var3: req.body.D3,
            var4: req.body.D4,
            var5: req.body.D5,
            var6: req.body.D6
        }
        res.render('newStage-3');
        break;
    case 'stage_3' :
        sess.cAttr = {
            var7: req.body.D7,
            var8: req.body.D8
        }
        res.render('newStage-4');
        break;
    case 'stage_4' :
        cModel.create(sess.cAttr);
        delete sess.cAttr;
        res.render('stage-end');
        break;
}
});

and express print out like this Cannot set property of 'cAttr' undefined.

Baroque Code
  • 134
  • 3
  • 15

0 Answers0