我正在尝试设置在路由之间持久存在的会话变量。
问题是,这似乎并没有发生。当我发出post请求时,会话变量会相应地更新——然而,当通过poster尝试不同的get路由(并检查控制台输出(时,变量为空
这是代码:
const express = require('express')
const session = require('express-session')
const bodyParser = require('body-parser')
const app = express()
app.use(session({
secret: 'test one',
resave: false,
saveUninitialized: true,
name: "mycookiesession",
cookie: { secure: false }
}))
let mySession
app.use(function (req, res, next) {
mySession = req.session
mySession.basket = []
next()
})
app.get('/basket', function (req, res) {
console.log(mySession.basket)
res.send(mySession.basket)
})
app.post('/basket/add', function (req, res) {
mySession.basket = [0, 1, 2]
console.log(mySession.basket)
res.send('null')
res.status(201).end()
})
app.listen(3000, function () {
console.log('Example app listening')
})
我做错了什么?我只需要在get:blacket路由中检索var时,通过post:blacket/add看到添加到篮中的值
干杯
您有一个中间件,它在会话中为每个传入请求设置basket = []
。由于app.use(function ...)
命令没有指定路径,因此对每个请求都执行该中间件。