Express:这个功能是怎么工作的?

Express: How does this function work?

本文关键字:工作 功能 Express      更新时间:2023-09-26
  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并且在我的register html页面的body中,我提交了一个带有电子邮件和密码字段的表单,我可以这样简单地访问它们吗?

在函数(err, account)回调中,它究竟在哪里获得err和account变量?我从来没有真正理解回调函数的变量是如何决定的,甚至他们是什么,似乎当你路由它不知何故需要两个变量错误和帐户?

非常感谢!

1 -你应该阅读ExpressJS文档看看主体,查询和参数之间的区别基本上是这样的

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

希望这能给你一个如何以及在哪里寻找信息的线索

2 - is节点约定,传递给回调函数的第一个变量总是错误变量,其余的是根据函数在这种情况下是帐户,因为该函数应该创建db帐户并返回整个帐户信息,因此它可以被回调

使用

什么信息通常通过请求进入?

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

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

查看更多。

在函数(err, account)回调中,它究竟在哪里获得err和account变量?

根据Node中的约定,回调将任何错误作为第一个参数传递,而任何非错误结果从第二个参数开始传递。因此,您通常会看到第一个参数称为errerr对象的结构不是完全标准的,但是假设在err对象中会有一个message字段是正常的,并且可能会有一些错误代码。

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

当然,你也可以将erraccount命名为任何你想要的。