【发布时间】:2015-05-01 15:04:39
【问题描述】:
我对学习 Node 和 Express 非常陌生,我仍在尝试用 express 来理解代码流。假设我们在 session.js 中有如下代码:
app.post('/session', notLoggedIn, function(req, res) {
User.findOne({
username: req.body.username,
password: req.body.password
}, function (err, user) {
if (err) {
return next(err);
}
if (user) {
req.session.user = user;
res.redirect('/users');
} else {
res.redirect('/session/new');
}
});
});
假设 User 是必需的 mongo 模式。我觉得奇怪的是 session.user 分配:
req.session.user = user;
由于 req 变量在重定向后将超出范围,但我们显然这样做是为了保留用户数据,所以我要弄清楚以下哪些场景描述了正在发生的事情。 (A) 分配给 req 参数的参数(当回调被调用时)被存储/仍在堆栈上的某个地方,(B) 会话被存储/在堆栈上并在它之前被分配给一个新的 req 对象传递给回调,或 (C) 与 B 相同,但在用户字段上(似乎不太可能并且可能是我做作的)。
【问题讨论】:
-
我会看一下代码,它并不多,而且似乎有据可查github.com/expressjs/session/tree/master/session
标签: javascript node.js session express