console.log 不打印节点 js 中的所有快速会话属性

console.log doesn't print all express session properties in node js

这个代码

router.post("/", (req, res) =>
{
    console.log(req.session)
    console.log(req.session.id)
})

打印

Session { cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true }, passport: { user: 'red' } }

然后

2sJgQxjBCbKgPiUN3pUdcDty_35GELeE

session.id 是否存储在 session 中?为什么第一次调用console.log后不显示?

设置如下:

app.use(bodyParser.urlencoded({ extended:true }))
var RedisStore = connectRedis(session)
app.use(session(
    {
        store: new RedisStore({ url: config.redisStore.url }),
        secret: config.redisStore.url,
        resave: false,
        saveUninitialized: false
    }))

在Node.js中,console.log使用Object.keys().

仅显示对象的自己的可枚举属性

Session 实例的 id 属性 不可枚举 因为它被定义为 (enumerable: false by default):

Object.defineProperty(this, 'id', { value: req.sessionID });

Source