[英]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
下) req.params
下) req.session
下) 看到這里更多。
在function(err,account)回調中,它在哪里得到err和account變量?
按照Node中的約定,回調將所有錯誤作為第一個參數傳遞,而從第二個參數開始將傳遞任何非錯誤結果。 因此,您通常會看到第一個參數err
。 err
對象的結構不是完全標准的,但是正常的情況是假設err
對象中將存在一個message
字段,並且可能會有一些錯誤代碼。
在您的示例中,您正在將該回調傳遞給Mongoose或其他一些數據庫處理庫。 該庫將嘗試在User
對象/模型/模式上執行register
功能。 完成后,如果遇到任何錯誤,它們將在err
對象上返回給您。 否則,您可以期望該account
對象保存有關該用戶帳戶的詳細信息。
此外,您也可以將其命名err
和account
,當然任何你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.