Koa Session: MySQL
Koa Session: MySQL
如何将koa会话连接到mysql存储?它看起来还没有开发出mysql存储,所以我想我可以开发它。除了扩建商店,还有其他解决方案吗?
根据我之前的回答,我已经在github和npm上发布了这段代码。代码不应该是ahrd-tp扩展到其他关系数据库:
https://github.com/tb01923/koa-mysql-session
我正试图按照connect-mysql会话存储逻辑/SQL构建一个mysql-koa会话存储。我还研究了koa-redis和koa-generationalsession/memory_store的方法。从本质上讲,会话存储提供了一个具有get(sid)和set(sid,obj)方法的对象。
两个koa会话存储对象都有以下签名:
Store.prototype.get = function *(sid) {
return session;
};
Store.prototype.set = function *(sid, val, ttl) { };
Store.prototype.destroy = function *(sid) { };
所以我把这些编码起来:
MysqlStore.prototype.get = function *(sid) {
let connection = this.getConnection()
let results = yield connection.query(GET_STATEMENT, [sid])
let session = null ;
if(results && results[0] && results[0][0] && results[0][0].data){
session = JSON.parse(results[0][0].data);
}
return session
};
MysqlStore.prototype.set = function *(sid, session, ttl) {
let expires = getExpiresOn(session, ttl).valueOf()
let data = JSON.stringify(session);
let connection = this.getConnection()
let results = yield connection.query(SET_STATEMENT, [sid, expires, data, expires, data])
return results
};
MysqlStore.prototype.destroy = function *(sid) {
let connection = this.getConnection()
let results = yield connection.query(DELETE_STATEMENT, [sid])
};
构造函数负责mysql连接池(通过co-mysql),并在DB中为会话设置表:
var MysqlStore = function (options) {
this.getConnection = function(){
let connection = mysql.createPool(options) ;
return connection ;
}
this.setup = co(function*() {
let connection = this.getConnection()
let result = yield connection.query(CREATE_STATEMENT)
})
this.setup()
};
在某个时候,我会寻求一些建议,在github和NPM上发布这个解决方案。我想确保我首先尊重使用过的库和许可证。项目将在这里:https://github.com/tb01923/koa-mysql-session
相关文章:
- 使用jquery将mysql数据获取到新的表行中
- 将地理编码结果转换为php变量以发布到mysql数据库
- 如何使用JS禁用表行,并在MYSQL中插入所选选项
- 从MySQL数据库中获取输入数据需要两次页面刷新
- 将一个表的id与另一个表中的user_id进行匹配,以获取mysql中的记录
- 在php和mysql中选择选项.一旦选择了选项,就列出我的sql数据库数据
- 如何使用PHP将javascript变量添加到mysql数据库中
- 将phonegap图像发布到php/mysql-图像字段从发布请求中消失
- 在node.js-mysql中执行UPDATE查询不起作用
- 更新从Mysql查询检索到的数据?Node.js节点mysql
- 单击鼠标,用MySQL数据填充html表单输入字段
- 浓缩一系列mySQL查询
- 如何翻译MySQL查询's ResultSet转换为整数
- 如何在mysql查询(NODE.js)中重复使用一个参数
- Node.JS, Angular.JS, MySql,Express.JS
- Ajax和MySql的插入、检查和检索
- onclick->mysql查询->javascript;同一页
- Koa Session: MySQL
- Express-mysql-session阻止passport deserializeUser运行
- 用passport.js、mysql和express-session持久化登录状态