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.params
, req.body
或req.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%相等的,你想要的东西当然是由你决定的,但大多数情况下并不重要)。