簡體   English   中英

快遞:此功能如何工作?

[英]Express: How does this function work?

  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?

非常感謝!

1-嗯,您應該閱讀ExpressJS文檔,並查看主體,查詢和參數之間的區別,但是基本上是這樣的

正文是指請求的正文,即通過POST或PUT查詢提交的數據,是指url或查詢字符串的搜索部分“?”之后的所有內容。 參數是指路徑中已參數化的部分。

希望能為您提供有關如何以及在何處查找信息的線索

2nd-是節點約定,始終將傳遞給回調的第一個變量始終為錯誤變量m其余的根據該函數(在這種情況下為account),因為該函數假定將創建db帳戶並返回整個帳戶信息,因此ir可以使用通過回調

通常通過req輸入什么信息?

請求對象( req )帶有您正在處理的請求的數據。 例如:

  • 以觸​​發請求的形式使用的字段(在req.body下)
  • 請求URL中使用的參數(在req.params下)
  • 會話/ Cookie信息(在req.session下)

看到這里更多。

在function(err,account)回調中,它在哪里得到err和account變量?

按照Node中的約定,回調將所有錯誤作為第一個參數傳遞,而從第二個參數開始將傳遞任何非錯誤結果。 因此,您通常會看到第一個參數err err對象的結構不是完全標准的,但是正常的情況是假設err對象中將存在一個message字段,並且可能會有一些錯誤代碼。

在您的示例中,您正在將該回調傳遞給Mongoose或其他一些數據庫處理庫。 該庫將嘗試在User對象/模型/模式上執行register功能。 完成后,如果遇到任何錯誤,它們將在err對象上返回給您。 否則,您可以期望該account對象保存有關該用戶帳戶的詳細信息。

此外,您也可以將其命名erraccount ,當然任何你想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM