为什么分配会话变量不起作用? Node.js
Why assigning a session variable isn't working? Node.js
我正在尝试构建一个简单的登录系统,但是当我尝试分配会话时出现此错误
Cannot set property 'user' of undefined
但是这是我的代码:
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,}))
这是登录控制器:
const loginModel = require('../model/loginModel');
module.exports = {
login : async function(req,res){
try {
const query = await loginModel.login(req.body.email,req.body.password);
if(query != null){
req.session.user = query;
res.status(200).json(req.session.user);
}else{
res.status(401).json({error : true});
}
} catch (error) {
console.error(error.message);
res.status(500).send('something went wrong');
}
}
}
注意:登录模型 100% 有效并且它从数据库中检索用户
嗯,会话中间件无法正常工作,因为根据您收到的错误,req.session
似乎不存在。以下是一些可能的情况:
您的会话中间件未正确获取运行。
您的会话中间件 运行 在您尝试使用 req.session
的路由之后。它必须是 运行 之前,因为该中间件是创建 req.session
对象并根据会话 cookie 加载其数据的东西。
根据这段代码,如果您将错误的 req
参数传递给 login(req, res)
方法,您也可能会遇到此错误,因此也值得检查一下。
如果不查看更多代码,我们无法具体看出问题所在。
我正在尝试构建一个简单的登录系统,但是当我尝试分配会话时出现此错误
Cannot set property 'user' of undefined
但是这是我的代码:
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,}))
这是登录控制器:
const loginModel = require('../model/loginModel');
module.exports = {
login : async function(req,res){
try {
const query = await loginModel.login(req.body.email,req.body.password);
if(query != null){
req.session.user = query;
res.status(200).json(req.session.user);
}else{
res.status(401).json({error : true});
}
} catch (error) {
console.error(error.message);
res.status(500).send('something went wrong');
}
}
}
注意:登录模型 100% 有效并且它从数据库中检索用户
嗯,会话中间件无法正常工作,因为根据您收到的错误,req.session
似乎不存在。以下是一些可能的情况:
您的会话中间件未正确获取运行。
您的会话中间件 运行 在您尝试使用
req.session
的路由之后。它必须是 运行 之前,因为该中间件是创建req.session
对象并根据会话 cookie 加载其数据的东西。根据这段代码,如果您将错误的
req
参数传递给login(req, res)
方法,您也可能会遇到此错误,因此也值得检查一下。
如果不查看更多代码,我们无法具体看出问题所在。