我使用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
}))
我的问题是,我是否调用“simple...how”命令(例如".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: ");})
我总是得到一个"not a ...Nothing“的错误抛出。我想要访问这些命令,以启用在存储中循环会话、根据需要删除以及其他杂项任务。
任何关于如何访问这些“存储命令”的建议都将不胜感激。我要提前谢谢你。
发布于 2021-07-13 11:55:22
如果您希望访问该模块的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 store接口--它并不意味着是一个单独可访问的数据库,但您可以从express-session store接口调用这些方法。
请记住,使用会话存储可以更好地处理您所询问的任务,该会话存储是一个真实的数据库,并且具有真实的数据库接口。然后,您可以使用常规数据库接口来访问以前存储的会话数据。
https://stackoverflow.com/questions/68355963
复制相似问题