在ExpressJS中按顺序获取req.params
Getting req.params in order in Express JS
在Express中,是否有一种方法可以按路由中定义的顺序获取从匹配路由传递的参数?
我希望能够将路由中的所有参数应用到另一个函数。问题是这些参数在前面是未知的,所以我不能显式地按名称引用每个参数。
app.get(':first/:second/:third', function (req) {
output.apply(this, req.mysteryOrderedArrayOfParams); // Does this exist?
});
function output() {
for(var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
调用GET: "/foo/bar/baz"
期望输出(按此顺序):
foo
bar
baz
req.route.keys
是参数的有序数组,其内容跟随{name:'first'}
。
所以,代码:
app.get(':first/:second/:third', function (req) {
var orderedParams = [];
for (var i = 0; i < req.route.keys; i++) {
orderedParams.push(req.params[req.route.keys[i].name]);
}
output.apply(this, orderedParams);
});
function output() {
for(var i = 0; i < arguments.length; i++) {
console.log(arguments[i]);
}
}
据我所知,通过express route params机制,这是一个非常简单的子系统。我认为老好人req.path.split('/')
是你在这里的朋友。
我相信您想要的是req.route.params
对象。
请参阅Express文档中的更多信息。
如果您不想使用param id,但想要他们的订单,那么执行此
app.get('/:0/:1/:2', function (req,res) {
console.log(req.params);
console.log(req.params[0]);
console.log(req.params[1]);
console.log(req.params[2]);
res.end();
});
//output
[ 'a', 'b', 'c' ]
a
b
c
GET /a/b/c 200 5ms
[ 'c', 'b', 'a' ]
c
b
a
GET /c/b/a 200 1ms
按照它们与匹配的顺序
您的标题具有误导性。你想解析路径,但你的标题是我在寻找参数时发现的,所以我会发布答案。
我使用lodash将第一个参数(req.params)验证为Mongo/ObjectId。不过,在您的情况下,您可以使用lodash键或值进行索引。。。
req.route.keys和req.params[0]一样不适合我
if (_.size(req.params) === 1) {
if (!mongoose.Types.ObjectId.isValid(_.values(req.params)[0])) {
return res.status(500).send('Parameter passed is not a valid Mongo ObjectId');
}
}
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 如何从未定义的表单中获取req.body
- 无法使用快递和猫鼬进行路由,请继续获取"类型错误:req.params.user不是函数;
- 我无法从nodejs + expressjs中的req.body获取数据
- 在ExpressJS中按顺序获取req.params
- 如何在快速节点服务器中获取“req”的参数
- 获取护照登录中req.logIn()后的空数组