serverless-mysql-session-store
v1.0.1
Published
Serverless-Compatible MySQL Session Store for Express.js
Downloads
4
Maintainers
Readme
MySQLSessionStore
A custom session store for Express.js using MySQL as the backend storage. It is based on the implementation described in this blog post.
Table of Contents
Introduction
MySQLSessionStore is a custom session store for Express.js applications, which uses MySQL as the backend storage for session data. This library provides a simple and efficient way to manage session data in a scalable and distributed environment. The primary motivation behind creating this custom session store was to facilitate its use in serverless environments like AWS Lambda, where managing MySQL connections and ensuring proper cleanup after each query is crucial. In addition, the library takes care of creating the required table during the initialization phase, which can be problematic in serverless environments. Thus, MySQLSessionStore was designed to address these specific challenges.
Installation
Install the package using npm:
npm install mysqlsessionstore
Usage
To use MySQLSessionStore in your Express.js application, follow these steps:
- Import the required modules:
const express = require('express');
const session = require('express-session');
const { MySQLSessionStore } = require('serverless-dynamodb-session-store');
- Configure the MySQL connection and create an instance of 'MySQLSessionStore':
const mysqlConfig = {
host: 'localhost',
user: 'username',
password: 'password',
database: 'your_database'
};
const store = new MySQLSessionStore(mysqlConfig);
- Configure the express-session middleware to use your custom store:
app.use(session({
secret: 'your_secret',
resave: false,
saveUninitialized: true,
store: store
}));
API
The MySQLSessionStore class extends the express-session.Store class and implements the following methods:
- get(sessionId: string, callback: (err: any, session: SessionData | null) => void): Promise
- set(sessionId: string, session: SessionData, callback?: (err?: any) => void): Promise
- destroy(sessionId: string, callback?: (err?: any) => void): Promise
- length(callback: (err: any, length?: number) => void): Promise
- touch(sessionId: string, session: SessionData, callback?: (err?: any) => void): Promise
- reap(callback?: (err?: any) => void): Promise
- all(callback: (err: any, sessions?: { [sid: string]: SessionData } | null) => void): Promise
Contributing
Contributions and feedback are welcome. Happy coding!