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.body.email,如果在我的注册html页面的正文中我已经提交了一个带有电子邮件和密码字段的表单,我可以这样访问它们吗?
在函数(错误,帐户)回调中,它究竟是在哪里得到错误和帐户变量?我从来没有真正理解回调函数如何决定变量或甚至它们是什么,看起来当你路由它时,它会以两个变量错误和帐户?
非常感谢!
答案 0 :(得分:1)
一速 那么你应该阅读ExpressJS文档,看看正文,查询和参数之间的区别,但基本上就是这样
body指的是请求的主体,它是通过POST或PUT提交的数据 查询是指"?"之后的url或查询字符串的搜索部分。 params指的是参数化路径的一部分。
希望能为您提供有关如何以及在何处查找信息的线索
第二个是节点约定,总是传递给回调的第一个变量是错误变量,其余的是根据这个案例中的函数是account,因为该函数假设创建db帐户并返回整个帐户信息所以ir可以回调使用答案 1 :(得分:0)
通常需要哪些信息?
请求对象(req
)附带有您正在处理的请求的数据。例如:
req.body
下)req.params
)req.session
下)有关详情,请参阅here。
在函数(错误,帐户)回调中,它究竟在哪里得到错误和帐户变量?
按照Node中的惯例,回调将任何错误作为第一个参数传递,并且从第二个参数开始传递任何非错误。因此,您通常会看到名为err
的第一个参数。 err
对象的结构不是完全标准的,但假设message
对象中有err
字段,可能还有一些错误代码,这是正常的。
在您的示例中,您正在将该回调交给Mongoose或其他一些数据库处理库。该库将尝试在register
对象/模型/模式上执行User
函数。完成后,如果遇到任何错误,他们会在err
对象上回复您。否则,您可以期望account
对象保存用户帐户的详细信息。
另外:当然,您可以将err
和account
命名为。