我有一個已經在運行的應用程式。問題是在我撰寫會話部分的時候開始的。當發現控制器中的這幾行代碼時,服務器就掛掉了。
req.session.save(( ) => {
req.session.loggedIn = true;
});
user-routes.js控制器是:
const router = require('express') 。 Router()。
console.log(__filename)。
router.get('/login', (req, res) => /span> {
res.render('login')。
});
router.post('/verify', (req, res) => /span> {
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) => /span> {
res.render('newUser')。
});
router.post('/saveUser', (req, res) => /span> {
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('expression-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(rouse)。
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。我停止了服務器,丟棄了資料庫中的表,重新創建并播種它們。
問題出在哪里?非常感謝您的幫助。
uj5u.com熱心網友回復:
Sequelize需要在服務器啟動時同步這些表(并添加會話表)。我正在取消對呼叫sequelize.sync()的那一行的注釋
const run = async ( ) => {
const sequelizeResult = await sequelize.sync({force: true})。)
//console.log("--> sequelizeResult :" (sequelizeResult));/span>
await app.listen(PORT, ( ) => {
console.log('Server listening on port %j', PORT) 。
});
}
這就解決了問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/319170.html
標籤:
上一篇:如何在同一個事務中使用javax.persistence.Query.executeUpdate()和org.hibernate.session.update()。
下一篇:如何正確處理與jooq的連接?
