Как использовать сеансы в expressjs с пользовательским именем таблицы db и полями и продолжением? - PullRequest
0 голосов
/ 07 мая 2020

Итак, я использую пакеты expressjs, sequelize и connect-session-sequelize.

Все, что я хочу, - это использовать имя настраиваемой таблицы вместо стандартных сеансов, предоставляемых пакетами connect-session-sequelize. .

Итак, все было сделано с помощью этих официальных документов: connect-session-sequelize official docs

Процесс выглядит следующим образом:

Создание промежуточного программного обеспечения сеанса:

app.use(
  session({
    secret: 'test secret',
    store: new SequelizeStore({
      db: sequelize,
      table: 'Session',
      extendDefaultFields,
      // checkExpirationInterval: 24 * 60 * 60 * 1000,
      // expiration: 14 * 86400,
    }),
    resave: false,
    saveUninitialized: false,
    cookie: { maxAge: 14 * 86400 },
  })
)

В этих настройках SequelizeStore мне нужно передать мою модель в качестве опоры таблицы:

const Session = sequelize.define('app_sessions', {
  sid: {
    type: Sequelize.STRING,
    primaryKey: true,
  },
  expires: Sequelize.DATE,
  data: Sequelize.STRING(50000),
})

const extendDefaultFields = (defaults, session) => ({
  data: defaults.data,
  expires: defaults.expires,
})

Но теперь, когда пришло время использовать мои сеансы, я получаю сообщение об ошибке и Google не помогает решить эту проблему.

Вот как я использую сеанс:

exports.getIndexPage = async (req, res) => {
  const { categories, navCategories } = req.body
  req.session.test = 'h1'
  const featuredCategories = getFeaturedCategories(categories)
  const slider = await getSlider()
  const productsNewArrivals = await getProductsNewArrivals(categories)
  res.render('index.pug', { navCategories, slider, featuredCategories, productsNewArrivals })
}

И вот ошибка:

TypeError: Cannot read property 'findCreateFind' of undefined
    at SequelizeStore.set

Если я Я не буду определять мою пользовательскую модель «Сессия» и просто буду использовать все, как указано выше - все будет работать. У меня есть новые записи в моей mysql db в таблице по умолчанию 'Session', но в моей настраиваемой таблице их нет.

Пожалуйста, помогите выяснить, что не так

...