各自的作用和区别,求解。
他们都是为 express-session 写的扩展… express-session 的 store 参数可以传入一个 session store 实例。
这个实例必须是一个EventEmitter,还必须要有store.destroy(sid, callback)
、store.get(sid, callback)
、store.set(sid, session, callback)
方法。另外有一些推荐实现的方法…
connect-mongo和connect-redis都是实现了上述方法的实例,更多实例还有这些。
这些实例的用处是: 将session存储在对应的存储介质中。store.get(sid, callback)
是取,store.set(sid, session, callback)
是存,不同的是connect-mongo把session存在了mongodb中,connect-redis把session存在了redis中。我们也可以增加一个connect-memcached把session存在memcached中…
把session存在其他介质中可以让session稳定、持久化一些。默认express-session把session存在内存里,程序崩溃session就丢失了。。
===========分割线=============
我写过一个没有用 express-session 的 redis-session 中间件,蛋疼地造了一个轮子……
app.use(expressSession({ secret : ‘SECRET’, cookie : {maxAge: 60601000}, store : new mongoStore({ db : mongoose.connection.db }) }));
MongoError: cannot establish topology capabilities as driver is still in process of connecting
求解
app.use(expressSession({ secret : 'SECRET’, cookie : {maxAge: 60601000}, store : new mongoStore({ db : ‘microblog’ // 换成字符串就好了… }) }));