【问题标题】:How to call 'store' commands with 'express-session'?如何使用“express-session”调用“store”命令?
【发布时间】:2021-09-22 03:03:39
【问题描述】:

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

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: ");})

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

任何有关如何访问这些“存储命令”的建议将不胜感激。提前谢谢你。

【问题讨论】:

    标签: node.js session session-variables store express-session


    【解决方案1】:

    如果您想访问该模块的 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 存储接口调用方法。

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

    【讨论】:

    • 感谢您的回复和信息,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-05-19
    • 2018-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2018-12-14
    相关资源
    最近更新 更多