我在项目的routes文件夹中创建apis,如何创建一个进行验证的类并在所有路径中使用它。 例如,如果路由创建了一个新用户,并且我希望我的验证类确保某个对象不是空的,而不是错误,不是未定义的非空。
例如,我想使用该类来验证它是否为空 我已经使用了快速验证器(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;
})
答案 0 :(得分:0)
如果你正在使用Express,你可以创建一个中间件,然后在你的应用上use
将其应用到你的所有路线:
中间件只是具有以下签名的函数: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)
希望它有所帮助, 欢呼声