[英]node js express, creating one class and use in different routes
我正在項目的routes文件夾中創建api,如何創建一個在其中進行驗證並在所有路由中使用它的類。 例如,如果路由創建了一個新用戶,並且我希望我的驗證類確保某個對象不為空,不是錯誤,不是未定義的,則為null。
例如,我想使用該類來驗證是否不為空,我已經在使用Express Validator(req.assert),但被要求更改為一個類。
我如何在路線中使用其他類,以及如何在繼續應用程序之前強制節點攜帶數據
router.post('/add',function(req,res){
var record = req.body.record,
first_name = record.first_name,
middle_name = record.middle_name,
last_name = record.last_name,
phone_number = record.phone_number;
})
如果您使用的是Express,則可以創建一個中間件,然后在應用程序上use
該中間件將其應用於所有路線:
中間件只是具有以下簽名的function(req, res, next){}
: function(req, res, next){}
。 就您而言,您可以執行以下操作:
function myMiddleware(req, res, next) {
if (req.body.record)
next()
else
res.status(400).json({message: "No record in your body"});
}
Express提供的next
功能允許您“繼續”,轉到下一個中間件或路由。 信息流如下所示:
request recieved by the route --> middleware1 --> middleware2 --> ... --> response
假設所有路由均由中間件組成,帶有res.json
或res.send
路由將成為我們的“最終路由”,該路由將返回響應。
因此,如果您想將此中間件應用於所有路由,則可以執行以下操作:
app.use(myMiddleware)
或者,如果您只想在路線上使用它:
router.post('/add', myMiddleware, function(req,res){ ... });
如果要將其應用於具有特定前綴的所有路由,請執行以下操作:
var router = express.Router()
router.use(myMiddleware)
app.use('/record', router)
希望能有所幫助,歡呼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.