如何解决如何使用“express-session”调用“store”命令?
我将 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
}))
我的问题很简单...我如何调用“存储”命令(例如“.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: ");})
...没有任何工作...我总是收到一个“不是函数”的错误。我想访问这些命令以启用在商店中的会话中循环、根据需要删除和其他杂项任务。
任何有关如何访问这些“存储命令”的建议将不胜感激。我先谢谢你。
解决方法
如果您想访问该模块的 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 存储接口调用这些方法。
请记住,使用作为真实数据库并具有真实数据库接口的会话存储可以更好地为您询问的任务提供服务。然后,您可以使用常规数据库接口访问先前存储的会话数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。