我是Node的新手,所以这很明显。在我应用程序的main.js文件中,我有一条带有回调功能的路由,该路由成功设置了用户的会话信息(UserID)。基本示例:
App.get("/setID", function(req,res){
req.session.UserID = ‘Fred’;
res.send(“User ID Set”);
})
这可行,但是我想练习使用路由器和控制器组织代码。当我像这样将代码移至controller.js时:
Exports.setSessionUserID = function(req,res){
req.session.UserID = ‘Fred’;
res.send(“User ID Set”);
}
我收到一条错误消息,提示未定义req.session:
TypeError:无法设置未定义的属性'UserID'。
如果我注释了req.session行,则我确实成功获得了res.send,因此路由器正确地调用了此函数。
我相信controller.js具有main.js中存在的所有相关“需求”(bodyParser,Express会话)。
为什么从控制器调用theis函数与从main.js调用函数有什么不同(关于会话)?
答案 0 :(得分:0)
这里唯一的问题是您试图在req.session
上设置属性,而该属性本身就是undefined
,
// you can do
Exports.setSessionUserID = function(req,res){
req.session = { UserId: `Fred` }
res.send(“User ID Set”);
}
一个例子
let req = {};
req.session = { UserId: `Fred` };
console.log(req.session.UserId);