NodeJS/express会话-在路由之间持久化会话变量



我正在尝试设置在路由之间持久存在的会话变量。

问题是,这似乎并没有发生。当我发出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 ...)命令没有指定路径,因此对每个请求都执行该中间件。

最新更新