【发布时间】:2021-08-25 02:59:02
【问题描述】:
我有一个已经在运行的应用程序。当我对会话部分进行编码时,问题就开始了。在控制器中发现这行代码时服务器挂起:
req.session.save(() => {
req.session.loggedIn = true;
});
user-routes.js 控制器是:
const router = require('express').Router();
console.log(__filename);
router.get('/login', (req, res) => {
res.render('login');
});
router.post('/verify', (req, res) => {
try {
// HERE *********************************************************************
req.session.save(() => {
req.session.loggedIn = true;
});
const messages = {};
res.render('dashboard', {messages, loggedIn:req.session.loggedIn},);
} catch (e) {
}
});
router.get('/newUser', (req, res) => {
res.render('newUser');
});
router.post('/saveUser', (req, res) => {
res.render('dashboard');
});
module.exports = router;
而我的 server.js 是:
const root = require('app-root-path')
const express = require('express');
const path = require('path');
const exphbs = require('express-handlebars');
const session = require('express-session');
const SequelizeStore = require('connect-session-sequelize')(session.Store);
const sequelize = require('./config/connection');
const app = express();
const PORT = process.env.PORT || 3000;
const routes = require('./controllers/index');
const configSession = {
secret: 'this is a secret',
cookie: {maxAge: 86400,},
resave: false,
saveUninitialized: true,
store: new SequelizeStore({db: sequelize}),
};
app.use(express.json());
app.use(express.static(root + path.sep + 'public'));
app.use(express.urlencoded({extended: true}));
app.use(routes);
app.use(session(configSession));
const hbs = exphbs.create();
app.engine('handlebars', hbs.engine);
app.set('view engine', 'handlebars');
const run = async () => {
//const sequelizeResult = await sequelize.sync({force: true});
//console.log("---> sequelizeResult :" + (sequelizeResult));
await app.listen(PORT, () => {
console.log('Server listening on port %j', PORT);
});
}
//RUN
run();
我正在使用 MySQL。我停止了服务器,删除了数据库表,再次创建并播种它们。
可能是什么问题?非常感谢您的帮助。
【问题讨论】:
-
尝试在 catch 中打印错误并发送响应
-
听从了你的建议@Ariel。它打印“无法读取未定义的属性‘保存’”。 Si,会话不工作?
-
看起来问题是这样的:SequelizeDatabaseError: Table 'tech_blog_db.session' doesn't exist
标签: node.js express session sequelize.js