问题描述
const saveSession(ctx, se){ //do somethink... ctx.session.se = se; //do somethink...}router.get(’/login1’, async (ctx, next) => { saveSession(ctx, ’login1’); ctx.body = ’done’; next();}).get(’/login2’, async (ctx, next) => { saveSession(ctx, ’login2’); ctx.body = ’done’; next();})
如上代码,因为server的信息是保存在ctx中的,所以如果要这样写个公共方法来保存session的话就要传递ctx变量,虽然这样做事可以实现效果但是这样传递整个ctx感觉这样做好像不是很科学(?)求各位解惑,谢谢!
问题解答
回答1:可以采用中间件的写法:
app.use((ctx, next) => { if (ctx.saveSession) return next(); ctx.saveSession = (se) => { //do somethink... ctx.session.se = se; //do somethink... }; return next();});// 使用ctx.saveSession(’login1’);