【问题标题】:Node.js - How to remove item from express sessionNode.js - 如何从快速会话中删除项目
【发布时间】:2020-12-29 17:30:05
【问题描述】:

Node.js - 如何从快速会话中删除项目

我试图从会话中删除我最近添加到会话中的项目。但我收到一个错误:

console.log('req.session:');
console.log(req.session);

req.session.checkout = 'Test';

var getSession = req.session;
console.log('getSession:');
console.log(getSession);

var { checkout, ...ret } = getSession;

console.log('ret:');
console.log(ret);

req.session = ret;

console.log('req.session:');
console.log(req.session);

console.log('req.session.checkout:');
console.log(req.session.checkout);

控制台:

req.session:
Session {
  cookie:
   { path: '/',
     _expires: 2020-07-16T12:04:03.332Z,
     originalMaxAge: 900000,
     httpOnly: true } }
getSession:
Session {
  cookie:
   { path: '/',
     _expires: 2020-07-16T12:04:03.332Z,
     originalMaxAge: 900000,
     httpOnly: true },
  checkout: 'Test' }
ret:
{ cookie:
   { path: '/',
     _expires: 2020-07-16T12:04:03.332Z,
     originalMaxAge: 900000,
     httpOnly: true } }
req.session:
{ cookie:
   { path: '/',
     _expires: 2020-07-16T12:04:03.332Z,
     originalMaxAge: 900000,
     httpOnly: true } }
req.session.checkout:
undefined
TypeError: req.session.touch is not a function

如何正确删除它,这样我才能恢复原始状态而不会出现错误?

req.session:
Session {
  cookie:
   { path: '/',
     _expires: 2020-07-16T12:04:03.332Z,
     originalMaxAge: 900000,
     httpOnly: true } }

【问题讨论】:

  • 这里可以删除会话变量delete req.session['<name>'];
  • @xMayank 谢谢!就这么简单!

标签: javascript node.js session


【解决方案1】:

迟到的答案,但可能对那些陷入困境的人有用。

您可以在创建会话时存储sessionID = req.sessionID。 然后您可以将其从会话存储中删除。

 req.sessionStore.all((error, sessions) => {
   req.sessionStore.destroy(sessionID, (error) => {});
 })

【讨论】:

    猜你喜欢
    • 2014-04-16
    • 2018-12-23
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多