如何在Typescript项目中使用express-mysql-session?

时间:2017-07-05 08:29:08

标签: mysql express typescript express-session

我正在尝试在Typescript项目中使用express-session和express-mysql-session。这是我的代码的相关部分:

import * as express from "express";
import * as expressSession from "express-session";
import * as expressMySqlSession from "express-mysql-session";

this.express = express();
const sessionStore = new expressMySqlSession(sessionStoreConfig, this.dbConnection);
const sessionHandler = expressSession({
                ...,
                store: sessionStore
            });
this.express.use(sessionHandler);

它不会编译,因为store选项的类型为expressSession.Store | expressSession.MemoryStore | undefined,而sessionStore的类型为MySQLStore。 我做错了什么?

此致

3 个答案:

答案 0 :(得分:1)

试试这个:

import * as express        from "express";
import * as expressSession from "express-session";
import expressMySqlSession from "express-mysql-session";

const MySQLStore   = expressMySqlSession(expressSession);
const sessionStore = new MySQLStore(sessionStoreConfig, this.dbConnection);
...

答案 1 :(得分:0)

import * as express from 'express';
import * as session from 'express-session';
const MySQLStore = require('express-mysql-session')(session);

import pool from './database';
const sessionStore = new MySQLStore({
  schema: {
    tableName: 'mire_sessions',
    columnNames: {
      session_id: 'session_id',
      expires: 'expires',
      data: 'data'
    }
  }
}, pool);

const app = express();
app.use(session({
  secret: 'z',
  resave: false,
  saveUninitialized: true,
  store: sessionStore
}))

此代码对我有用。但是我不知道为什么

答案 2 :(得分:0)

express-sessionexpress-mysql-session@types/express-mysql-session都列为依赖项:

Current version of the types(大约两年前)跟踪express-mysql-session的旧版本,其中默认导出为类。幸运的是,此较早版本的库中有一些backwards-compatibility,因此您可以直接实例化它:

import MySQLSessionStore from "express-mysql-session";

const store = new MySQLSessionStore({...});

该库将为您处理importing the express-session dependency

代码永不说谎!