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