续集和快速会话模型

我试图让快速会议与postgres工作。 经过几个小时的debugging,我已经解决了所有的问题,但只有一个。 一切正常,但以下:

如果我在pgAdmin中运行这个查询,我的会话将正常工作

CREATE TABLE "sessions" ( "sid" varchar NOT NULL COLLATE "default", "sess" json NOT NULL, "expire" timestamp(6) NOT NULL ) WITH (OIDS=FALSE); ALTER TABLE "sessions" ADD CONSTRAINT "session_pkey" PRIMARY KEY ("sid") NOT DEFERRABLE INITIALLY IMMEDIATE; 

如果我使用sequelize创build模型,那么它不会保存会话。 我敢肯定,这是显而易见,我缺less我的模型定义的一些部分,并会感激任何input。

 var Sessions = database.define('sessions', { sid: { type: Sequelize.STRING, primaryKey: true }, expire: { type: Sequelize.DATE, allowNull: true }, sess: Sequelize.JSON }); return Sessions; 

其余的代码工作与此

 var pgSession = require('connect-pg-simple')(expressSession), sessionSettings = { store: new pgSession ({ conString: 'postgres://' + dbConfig.user +':' + dbConfig.password+ '@' + dbConfig.host+ ':5432/' + dbConfig.database, tableName : 'sessions' }), secret: 'whatevergoeshere', resave: false, saveUninitialized: false, cookie: { maxAge: 7*24*60*60*1000 } }; app.use(expressSession(sessionSettings)); 

我不知道如何包含缺less的部分,并且将文档的后续处理放在主题上,或者我的睡眠不足

其余的代码可以应要求提供,但是可以肯定的是它不会影响任何东西,因为如果我不强制与sequ​​elize模型同步并使用查询,那么一切正常。

另外,这里是通过pgAdmin来查看,最上面的一个是用pgAdmin中的查询创build的,最下面的是通过sequelize

在这里输入图像描述

预先感谢您的时间!

Sequelize默认创buildcreatedAt和updatedAt列,不允许为NULL。 通过使用模块“connect-pt-simple”来添加行,它会静默失败,因为它不会为这两个字段提供值。 要么自己处理案例并更新这些值,要么在模型中设置这两个属性为“allowNull:true”,或者添加一个默认值。 当然,第一种select是首选,将来可能会很方便。

为了使用“connect-session-sequelize”自动生成会话表,您需要在SequelizeStore实例上调用sync()方法

 var session = require('express-session'); var Sequelize = require('sequelize'); var db = new Sequelize('test', 'root', '****'); var SequelizeStore = require('connect-session-sequelize')(session.Store); var sessionStore = new SequelizeStore({ db: db, checkExpirationInterval: 15 * 60 * 1000, expiration: 7 * 24 * 60 * 60 * 1000 }); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false, store: sessionStore })); sessionStore.sync()