繁体   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