【发布时间】:2016-03-02 11:42:26
【问题描述】:
我正在尝试让快速会话与 postgres 一起使用。经过几个小时的调试,我已经解决了所有问题,但只有一个。一切正常,但如下:
如果我在 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 创建模型,则它不会保存会话。我很确定,很明显我在我的模型定义中遗漏了一些部分,并且很感激任何输入。
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));
我不知道如何包含缺少的部分,并且续集文档要么是缺少主题,要么是我没有足够的睡眠
其余代码可应要求提供,但可以肯定的是它不会影响任何事情,因为如果我不强制与 sequelize 模型同步并使用查询,一切正常。
另外,这是通过 pgAdmin 的外观,顶部是在 pgAdmin 中使用查询创建的,底部是通过 sequelize 创建的
【问题讨论】:
-
你为什么不直接使用connect-session-sequelize?
-
我更新了我的问题以反映您的评论
-
更新了另一个项目的源代码,我现在遇到了同样的问题。
-
很遗憾,我不是 Sequelize 方面的专家。在我的项目中,我使用pg-promise 进行数据库访问,加上connect-pg-simple 进行会话,如果这对您有任何帮助的话。
标签: node.js postgresql session express