Привязать функцию, которая будет автоматически вызываться после удаления сеанса

#node.js #mongodb #express #session #connect-mongo

Вопрос:

Я использую express-session и connect-mongo и у меня есть рабочее хранилище сеансов, как показано ниже:

 import session from 'express-session'
import MongoStore from 'connect-mongo'

app.use(session({
  secret: 'configs.secret',
  resave: true,
  saveUninitialized: true,
  rolling: true,
  store: MongoStore.create({
    client: mongoose.connection.getClient()
  }),
  cookie: { /* ..configs.. */ }
}))
 

С сеансом все в порядке. Но для каждого нового сеанса я создаю новый документ из другой коллекции и связываю его с сеансом.

Допустим, я создаю тест, а затем добавляю его идентификатор req.session.quiz . И устанавливает тест status на 'started' . Доступные состояния внутри объекта quiz: ['started'', 'completed', 'expired'] . Итак, чего я хочу добиться: когда пользователь покидает браузер на 10 минут, я хочу удалить его сеанс и немедленно установить статус викторины 'expired' .

У меня есть рабочая версия того, как и когда срок действия файлов cookie истекает, как показано ниже, и хранилище автоматически удаляет истекшие сеансы соответствующим образом:

 app.use(session({
  // ..same configs above..
  cookie: {
    httpOnly: true,
    secure: !devMode(),
    sameSite: true,
    maxAge: ms('1m')
  }
}))
 

Но я не знаю, возможно ли реализовать или привязать функцию, чтобы я мог обновить статус теста, как описано выше. Доступные события, которые connect-mongo предлагает, ограничены этим. А также express-session не упомянул способ привязки pre или post для доступных событий.

Был бы признателен за вашу помощь!