Как подключить сеанс koa к хранилищу mysql? Не похоже, что хранилище mysql еще не разработано, поэтому я полагаю, что мог бы его разработать. Есть ли другие решения, кроме как построить магазин?
Сессия Коа: MySQL
Ответы (2)
из моего предыдущего ответа я опубликовал этот код на github и npm. Код не должен распространяться на другие реляционные БД:
https://github.com/tb01923/koa-mysql-session
Я пытаюсь создать хранилище сеансов mysql koa после подключения mysql- логика хранилища сеансов / SQL. Я также просматриваю koa-redis и koa-generic-session/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), и настройкой таблица в БД для сессии:
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 а>