Skip to content

MemoryStore doesn't save ES2015/ES6 Map objects correctly #6

Description

@AMA3

When I add a Map object to the session, subsequent requests find an empty object under the same name instead of the original Map. This results in an error.

var express = require('express');
var app = express();
var session = require('express-session')
var MemoryStore = require('memorystore')(session)
app.use(session({
  store: new MemoryStore({ checkPeriod: 86400000 }),
  resave: true,
  saveUninitialized: true,
  secret: 'keyboard cat'
  }));
app.get( '/', ( req, res ) => {
  if ( ! req.session.hasOwnProperty( 'mymap' ) )
    req.session.mymap = new Map( [ [ 'message', 'hello' ] ] );
  console.log( req.session.mymap );
  res.end( req.session.mymap.get('message') )
  } );
app.listen( 8100, () => console.log('Go ahead; I\'m listening.' ) );

First Request (console):

Go ahead; I'm listening.
Map { 'message' => 'hello' }

First Request (browser):

hello

Second Request (console):

TypeError: req.session.mymap.get is not a function
at app.get (.../app.js:15:30)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at next (.../node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (.../node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at .../node_modules/express/lib/router/index.js:281:22
at Function.process_params (.../node_modules/express/lib/router/index.js:335:12)
at next (.../node_modules/express/lib/router/index.js:275:10)
at Immediate. (.../node_modules/express-session/index.js:489:7)
at runCallback (timers.js:697:11)
{}

Second Request (browser):

TypeError: req.session.mymap.get is not a function
at app.get (.../app.js:15:30)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at next (.../node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (.../node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (.../node_modules/express/lib/router/layer.js:95:5)
at .../node_modules/express/lib/router/index.js:281:22
at Function.process_params (.../node_modules/express/lib/router/index.js:335:12)
at next (.../node_modules/express/lib/router/index.js:275:10)
at Immediate. (.../node_modules/express-session/index.js:489:7)
at runCallback (timers.js:697:11)

I'm using:

"express": "~4.16.0",
"express-session": "^1.15.6",
"memorystore": "^1.6.0",

See also: expressjs/session: es2015 Map object looks problem #302

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions