gpt4 book ai didi

node.js - Node w/Express req.session 在controller.js中未定义

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:01 27 4
gpt4 key购买 nike

我是 Node 新手,所以这可能是显而易见的。在我的应用程序的 main.js 文件中,我有一个带有回调函数的路由,可以成功设置用户的 session 信息 ( UserID)。基本示例:

App.get("/setID", function(req,res){
req.session.UserID = ‘Fred’;
res.send(“User ID Set”);
})

这可行,但我想练习使用路由器和 Controller 组织代码。当我将代码移动到controller.js时,如下所示:

 Exports.setSessionUserID = function(req,res){
req.session.UserID = ‘Fred’;
res.send(“User ID Set”);
}

我收到一条错误,指出 req.session 未定义:

类型错误:无法设置未定义的属性“UserID”。

如果我注释掉 req.session 行,我确实成功获取了 res.send,因此路由器正确调用了此函数。

我相信controller.js具有main.js中存在的所有相关“需求”(bodyParser、Express-sessions)。

为什么从 Controller 调用 theis 函数与从 main.js 调用它有什么不同(关于 session )?

最佳答案

这里唯一的问题是,您试图在 req.session 上设置一个属性,而该属性本身是未定义,而您不能这样做

// 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);

关于node.js - Node w/Express req.session 在controller.js中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51054050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com