我有一条用 Express 编写的路线,如下所示:
app.get("/route", function(req, res){
if (someBoolean){
someFunction(stuff, function(user){
...
req.session.user = user;
});
}
res.render("route");
}
当someBoolean为真时,应设置会话。然而,在移动到不同的页面后,req.session.user 以未定义的形式返回。但是,在 someFunction 中检查 req.session.user会返回定义。我发现会话在 someFunction 范围之外变得未定义的解决方案是将 res.render("route") 移动到someFunction中,如下所示:
app.get("/route", function(req, res){
if (someBoolean){
someFunction(stuff, function(user){
...
req.session.user = user;
res.render("route");
});
}
}
但是,当someBoolean为 false 时,这会导致路由失败。我认为这是由 Node.js 的异步特性引起的,但我不确定。是什么导致这种情况发生,这是正确的解决方案吗?