javascript - 如何将属性设置为 req.session
问题描述
我是 node.js 和会话的新手,我遇到的问题是将属性设置为 sesssion !我尝试将属性添加到会话并将其保存在数据库中,但出现错误
这是我的代码:app.js :(主 js 文件)
const store = new MongoDBStore({
uri : 'mongodb://127.0.0.1:27017/OnLineShop',
collection : 'session'
})
// routes :
app.use(shopRoutes)
app.use('/admin', adminRoutes)
app.use(authroutes)
// session :
app.use(session(
{
secret : 'secret key' ,
resave : false ,
saveUninitialized : false ,
store : store
}
))
这是我的身份验证处理程序,我将其命名为 auth.js :
// rout handler for post login requst :
module.exports.postLogin = (req , res)=>{
// session :
req.session.isLoggedIn = true
res.redirect('/')
}
在我吃完这个应用程序并想登录后出现这个错误:
TypeError: Cannot set property 'isLoggedIn' of undefined
at module.exports.postLogin (/home/sadra/Desktop/projects/web/javascript/shop-app/controllers/auth.js:15:28)
at Layer.handle [as handle_request] (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/layer.js:95:5)
at next (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/route.js:137:13)
at Route.dispatch (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/layer.js:95:5)
at /home/sadra/Desktop/projects/web/javascript/nodejs_frontCast/shop-app/node_modules/express/lib/router/index.js:281:22
at Function.process_params (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:335:12)
at next (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:275:10)
at Function.handle (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:174:3)
at router (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:47:12)
at Layer.handle [as handle_request] (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/sadra/Desktop/projects/web/javascript/nodejs_frontCast/shop-app/node_modules/express/lib/router/index.js:317:13)
at /home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:335:12)
at next (/home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:275:10)
at /home/sadra/Desktop/projects/web/javascript/shop-app/node_modules/express/lib/router/index.js:635:15
我不知道我们如何以正确的方式为会话设置属性!
解决方案
要解决此问题,请更改您的代码顺序,
// routes :
app.use(shopRoutes)
app.use('/admin', adminRoutes)
app.use(authroutes)
// session :
app.use(session(
{
secret : 'secret key' ,
resave : false ,
saveUninitialized : false ,
store : strore
}
))
至
// session :
app.use(session(
{
secret : 'secret key' ,
resave : false ,
saveUninitialized : false ,
store : strore
}
))
// routes :
app.use(shopRoutes)
app.use('/admin', adminRoutes)
app.use(authroutes)
推荐阅读
- php - 如何将 API 发布请求作为对象存储到 JSON 文件?
- swiftui - 在 ForEach 循环中绑定时,如何阻止 SwiftUI TextField 失去焦点?
- mongodb - 来自 MongoDB 的主题字段
- reactjs - 结合上传和提交的方法 - 反应?
- c++ - 如何在没有因子的情况下打印数字的因子数请查看我的代码
- python - 当我召回时,python 中的决策树处方。当 class=0 和 class=1 分别时,我如何获得这两个?
- openjdk-11 - OpenJDK 11 的来源(包括错误/安全修复版本)
- ios - iOS Autolayout 高度对于 UILabel 不明确
- python-3.x - 如何在 Google Colab Notebook 上使用 python3 安装 caffe
- solidity - 使用 % 缩短一个整数