replaceExpress 4中不赞成使用的req.param()

我们正在从ExpressJS 3迁移到ExpressJS 4,并且我们注意到以下API已被弃用:

req.param(fieldName) req.param(fieldName, defaultValue) 

是否有一个中间件把这些API带回来,就像其他从快速到独立模块“外化”的API?

基于Express文档,我们应该这样使用

快递3

 req.param(fieldName) 

在快递4

 req.params.fieldName 

我个人更喜欢req.params.fieldName而不是req.param(fieldName)

好吧,在阅读@Ineentho提供的参考文献之后,我们决定提出以下答案:

https://github.com/osher/request-param

一个连接/expression中间件,用于启用在express 4中弃用的req.param(name,default)API

中间件不仅带回了goo'oldfunction。 它还可以让你自定义从中获取参数的集合的顺序 ,既作为默认规则,也作为每个调用:-)

玩的开心!

你为什么要把它带回来? 有一个原因,它已被弃用,因此你可能应该离开它。

关于为什么他们不赞成API的讨论可以在他们的问题跟踪器中作为#2440获得 。

该函数是从req.paramsreq.bodyreq.query获取参数值的一种快捷方式。 这在某些情况下当然会造成麻烦,这就是为什么他们要把它除掉。 在这里看到你自己的function。

如果你只是使用url参数的函数,你可以用req.query['smth'] or 'default'来replace它:

 var param_old = req.param('test', 'default'); var param_new = req.query['test'] || 'default'; 

(请注意,一个空string被评估为false ,所以它们实际上并不是100%相等的,你想要的东西当然是由你决定的,但大多数情况下并不重要)。