【发布时间】:2014-06-15 04:25:54
【问题描述】:
router.post('/register', function(req, res) {
User.register(new User({ username : req.body.email }), req.body.password, function(err, account) {
if (err) {
return res.render('register', { account : account });
}
passport.authenticate('local')(req, res, function () {
res.redirect('/');
});
});
});
我对这个路由帖子有大致的了解,但我并不完全理解。
什么信息一般通过req进来?好像如果我做 req.body.email 并且如果在我的注册 html 页面的正文中我已经提交了一个带有电子邮件和密码字段的表单,我可以简单地以这种方式访问它们吗?
在 function(err, account) 回调中,它究竟是从哪里获取 err 和 account 变量的?我从来没有真正理解回调函数的变量是如何决定的,或者它们是什么,似乎当你路由它时,它以某种方式需要两个变量 err 和 account?
非常感谢!
【问题讨论】:
-
user.register函数决定如何、何时以及使用什么参数来调用传递给它的回调函数。 -
这是 express 框架。通常,还有很多其他“中间件”,它们是 req 和 res 对象在到达路由器之前通过的函数。你应该设置一个手动的http服务器并查看req(req对象来自本机节点http服务器)并查看express如何更改它(以及像bodyparser这样的中间件)
-
另外,您可以在javascript中将函数设置为变量,这称为闭包。这就是这里发生的事情。您调用 User.register 函数并提供新用户、密码和函数作为参数。 User.register 将调用该函数并向其提供帐户和/或错误。
标签: javascript node.js express