簡體   English   中英

節點js表達,創建一個類並在不同的路由中使用

[英]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.jsonres.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.

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