快递:这个功能如何运作?

时间:2014-06-15 04:25:55

标签: javascript node.js express

  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页面的正文中我已经提交了一个带有电子邮件和密码字段的表单,我可以这样访问它们吗?

在函数(错误,帐户)回调中,它究竟是在哪里得到错误和帐户变量?我从来没有真正理解回调函数如何决定变量或甚至它们是什么,看起来当你路由它时,它会以两个变量错误和帐户?

非常感谢!

2 个答案:

答案 0 :(得分:1)

一速 那么你应该阅读ExpressJS文档,看看正文,查询和参数之间的区别,但基本上就是这样

body指的是请求的主体,它是通过POST或PUT提交的数据 查询是指"?"之后的url或查询字符串的搜索部分。 params指的是参数化路径的一部分。

希望能为您提供有关如何以及在何处查找信息的线索

第二个是节点约定,总是传递给回调的第一个变量是错误变量,其余的是根据这个案例中的函数是account,因为该函数假设创建db帐户并返回整个帐户信息所以ir可以回调使用

答案 1 :(得分:0)

  

通常需要哪些信息?

请求对象(req)附带有您正在处理的请求的数据。例如:

  • 触发请求的表单中使用的字段(在req.body下)
  • 请求网址(req.params
  • 中使用的参数
  • 会话/ Cookie信息(在req.session下)

有关详情,请参阅here

  

在函数(错误,帐户)回调中,它究竟在哪里得到错误和帐户变量?

按照Node中的惯例,回调将任何错误作为第一个参数传递,并且从第二个参数开始传递任何非错误。因此,您通常会看到名为err的第一个参数。 err对象的结构不是完全标准的,但假设message对象中有err字段,可能还有一些错误代码,这是正常的。

在您的示例中,您正在将该回调交给Mongoose或其他一些数据库处理库。该库将尝试在register对象/模型/模式上执行User函数。完成后,如果遇到任何错误,他们会在err对象上回复您。否则,您可以期望account对象保存用户帐户的详细信息。

另外:当然,您可以将erraccount命名为。