如何检查express / node js中get方法中是否有支持的参数?

我在我的node.js后端有一个方法:

app.get('/reports', function(req, res){ var amount = req.param('amount'); var longitude = req.param('long'); var latitude = req.param('lat'); var distance = req.param('distance'); var numberOf = req.param('numberOf'); 

我使用一个validator.js( https://github.com/chriso/validator.js )插件来validation它的input。

所以例如它看起来像这样的数量:

 var amount = req.param('amount'); if (amount && !validator.isNumeric(amount)) { return res.status(406).send("Please send a valid amount"); } 

当用户键入: /reports?amount=aaa他会得到错误。 当他键入/reports?amount=2他会得到过滤结果。

但是,例如,当用户input一些随机参数,例如/reports$randomString=21我想给他返回一个消息,对不起,但是randomString不是一个有效的参数。 我怎么能做到这一点,而不知道用户可以键入什么样的不同string?

Express将设置包含请求提供的所有查询参数的req.query对象。

你可以遍历这个对象来validation所有的参数是否有效。

例如:

 req.query.keys(o).forEach(function(key) { // your validations here if (key != 'amount' && key != 'long' && .... ) { // wrong param, throw error } });