替换在Express 4中不推荐使用的req.param()

时间:2015-03-09 18:29:30

标签: node.js express

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

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

是否有一个中间件可以将这些API带回来,就像其他已经外化的API一样?'从快递到独立模块?

EDITED: 澄清 - 需要一种API,它提供对参数的抽象泛型访问,无论它是路径参数,查询字符串参数还是正文字段。

3 个答案:

答案 0 :(得分:15)

基于Express Documentation,我们应该像这样使用

express 3

req.param(fieldName)

express 4

req.params.fieldName

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

答案 1 :(得分:8)

你为什么要把它带回来?有一个原因是它被弃用了,因此你应该放弃它。

有关他们弃用API的原因的讨论可在其问题跟踪器#2440上找到。

该函数是从req.paramsreq.bodyreq.query获取参数值的快捷方式。这当然会在某些情况下造成麻烦,这就是为什么他们要删除它。请亲自查看该功能here

如果你只是使用url参数的函数,你只需用req.query['smth'] or 'default'检查代替它:

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

(请注意,空字符串会被评估为false,因此它们实际上并非100%相等。您想要的当然取决于您,但在大多数情况下它并不重要。)

答案 2 :(得分:6)

好的,在阅读了@Ineentho的参考文献中给出的主题后,我们决定提出以下答案:

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

  

一个connect / express中间件,用于启用快递4中不推荐使用的req.param(名称,默认)API

中间件不仅带回了goo的旧功能。 它还允许您 自定义从中检索参数的集合的顺序 ,作为默认规则和每次调用: - )

玩得开心!