簡體   English   中英

未創建快速會話 session tbl

[英]express-session session tbl is not created

美好的一天,我對快遞 session 有疑問。

在我的筆記本電腦上,代碼按原樣工作,但是一旦我嘗試將 session 保存到不同系統上的不同數據庫中,sessiontbl 就不會自動創建。

這是我的 app.js:

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const session = require('express-session');
const mysql = require('mysql');
const MySqlStore = require('express-mysql-session')(session);

const fileUpload = require('express-fileupload');

const indexRouter = require('./routes/index');
const loginRouter = require('./routes/login');
const panelRouter = require('./routes/panel');
const logoutRouter = require('./routes/logout');

const app = express();

//Session Setup
const options = {
  host: '127.0.0.1',
  port: 3306,
  user: 'dbuser',
  password: 'dbpassword',
  database: 'db'
};
const sessionConnection = mysql.createConnection(options);
const sessionStore = new MySqlStore({
  expiration: 108000000,
  createDatabaseTable: true,
  schema: {
    tableName: 'sessiontbl',
    columnNames: {
      session_id: 'session_id',
      expires: 'expires',
      data: 'data',
    } 
  }
}, sessionConnection);

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

// Use middleware
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(session({
  secret: 'mysecretnotonlaptop',
  store: sessionStore,
  resave: false, 
  saveUninitialized: false,
  cookie: {
    maxAge: 1000 * 60 * 60 * 24
  }
}));

app.use(fileUpload({
  limits: { fileSize: 50 * 1024 * 1024 },
}));

// Routes Setup
app.use('/', indexRouter);
app.use('/login', loginRouter);
app.use('/panel', panelRouter);
app.use('/logout', logoutRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

這就是我的 package.json 的樣子:

{
  "name": "aktiv-radio-control-panel",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www",
    "devstart": "nodemon ./bin/www"
  },
  "dependencies": {
    "bcrypt": "^5.0.1",
    "body-parser": "^1.20.0",
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "express-fileupload": "^1.4.0",
    "express-mysql-session": "^2.1.8",
    "express-session": "^1.17.3",
    "express-validator": "^6.14.1",
    "formidable": "^2.0.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "mysql2": "^2.3.3",
    "nodemon": "^2.0.16",
    "pug": "^3.0.2",
    "qrcode": "^1.5.0",
    "socket.io": "^4.5.1",
    "socketio": "^1.0.0",
    "speakeasy": "^2.0.0"
  }
}

有人能幫助我嗎?

非常感謝:)

Session 存儲將自動創建“會話”表。 您需要首先在 MySQL Workbench 中創建自定義表和列。 然后將 createDatabaseTable: true 設置為 createDatabaseTable: false。 您可以閱讀文檔以了解更多信息。

https://www.npmjs.com/package/express-mysql-session

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM