【发布时间】:2021-12-01 13:48:51
【问题描述】:
这是一些概述我的问题的示例代码。我正在尝试让 express-session / connect-session-sequelize 为具有登录功能的网站工作。
但是,当我尝试调用我的 POST 请求时,我收到以下错误:
我只能假设它正在尝试将会话数据存储到我的数据库中,但找不到表。我可以通过进入并使用它想要的所有列手动创建表来绕过这个,但我想知道我的代码中是否存在阻止包正常工作的问题(或者这是它应该如何工作。)
require('dotenv').config({ path: './config/.env' })
const express = require('express')
const session = require('express-session')
const mysql = require('mysql2')
const Sequelize = require('sequelize')
const path = require('path')
const SequelizeStore = require('connect-session-sequelize')(session.Store)
const app = express()
const PORT = 9999
app.use(express.json())
app.use(express.static(path.join(__dirname, 'public')))
// Allowing connection to database in Workbench
const db = new Sequelize('somedatabase', 'root', process.env.PASSWORD, {
host: 'localhost',
dialect: 'mysql'
})
db.authenticate()
.then(() => {
console.log('Connected...')
}).catch(error => {
console.log('Failed to connect...', error)
})
// Setting up session
app.use(session({
secret: 'shhh',
store: new SequelizeStore({
db: db
}),
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 1000000
}
}))
// Sample model
const User = db.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
username: Sequelize.STRING,
password: Sequelize.STRING
})
// Sample request
app.post('/api/create', async (req, res) => {
const newUser = {
username: john,
password: verysecurepassword
}
await User.create(newUser)
})
app.listen(PORT, () => {
console.log(`Listening on localhost:${PORT}...`)
})
【问题讨论】:
标签: mysql node.js express-session