如何用 'express-session' 调用 'store' 命令?

How to call 'store' commands with 'express-session'?

我正在使用 Node.js/Express 和 'express-session' 模块进行会话管理。我的设置如下:

var session = require('express-session');
var MemoryStore = require('memorystore')(session)
const express = require('express');
const app = express();

app.use(session({
 cookie: { maxAge: 86400000 },
 store: new MemoryStore({
   checkPeriod: 86400000 // prune expired entries every 24h
 }),
 resave: false,
 saveUninitialized: false,
 unset: 'destroy',
 secret: process.env.COOKIE_SECRET
}))

我的问题很简单...如何调用 'store' 命令(例如“.all”、“.destroy”、“.length”等)...?我至少尝试了以下操作:

session.store.all(function(error, len) {console.log("EXECUTED MEMORYSTORE LIST: ");})
MemoryStore.all(function(error, len) {console.log("EXECUTED MEMORYSTORE LIST: ");})
store.all(function(error, len) {console.log("EXECUTED MEMORYSTORE LIST: ");})

...没有任何效果...我总是会抛出“不是函数”错误。我想访问这些命令以启用在商店中的会话之间循环、根据需要删除以及其他杂项任务。

任何关于如何访问这些 'store commands' 的建议将不胜感激。提前谢谢你了。

如果您想访问该模块的 MemoryStore 接口,那么您只需将实例保存到您自己的变量中:

const memoryStore = new MemoryStore({
   checkPeriod: 86400000 // prune expired entries every 24h
});

app.use(session({
 cookie: { maxAge: 86400000 },
 store: memoryStore,
 resave: false,
 saveUninitialized: false,
 unset: 'destroy',
 secret: process.env.COOKIE_SECRET
}));

现在,您可以访问 memoryStore 的实例,并且可以访问它具有的任何方法。你可以在代码中看到它提供了哪些方法here。它的实现实际上只是为 express-session 存储接口服务——它并不意味着作为一个单独可访问的数据库,但您可以从 express-session 存储接口调用方法。

请记住,使用作为真实数据库并具有真实数据库接口的会话存储可以更好地完成您询问的任务。然后,您可以使用常规数据库接口访问以前存储的会话数据。