如何在nodejs Express服务中查询参数中发送整数

我有一个nodejs express web服务器在我的机器上运行。 我想发送一个获取请求以及查询参数。 有没有什么办法find像int,bool,string这样的每个查询参数的types。 查询参数键值对我来说是不知道的。 我在服务器端解释为键值对的json对象。

你不能,因为HTTP没有types的概念:一切都是一个string,包括查询string参数。

你需要做的是使用req.query对象,并使用parseInt()手动将string转换为整数:

 req.query.someProperty = parseInt(req.query.someProperty); 

你也可以试试

 var someProperty = (+req.query.someProperty); 

这对我有用!

正如Paul Mougel所说,http查询和pathvariables是string。 但是,这些可以在处理之前被拦截和修改。 我这样做:

 var convertMembershipTypeToInt = function (req, res, next) { req.params.membershipType = parseInt(req.params.membershipType); next(); }; 

之前:

 router.get('/api/:membershipType(\\d+)/', api.membershipType); 

后:

 router.get('/api/:membershipType(\\d+)/', convertMembershipTypeToInt, api.membershipType); 

在这种情况下,req.params.membershipType从string转换为整数。 注意正则expression式以确保只有整数传递给转换器。

也许这对读者来说是有帮助的,但我喜欢使用箭头函数来保持我的代码清洁。 由于我所做的只是更改一个variables,它应该只需要一行代码:

 module.exports = function(repo){ router.route('/:id, (req, res, next) => { req.params.id = parseInt(req.params.id); next(); }) .get(repo.getById) .delete(repo.deleteById) .put(repo.updateById); }