Итак, я использую пакеты 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', но в моей настраиваемой таблице их нет.
Пожалуйста, помогите выяснить, что не так