Foxx:如何预先定义queryParams?

时间:2016-08-03 22:33:21

标签: arangodb foxx

我正在加快ArangoDB和Foxx的速度,到目前为止,经验非常棒!不过我有一个问题:

对于Foxx路由器,可以指定queryParams,例如/graph/nodes?eyes=blue&hair=blond

令我感到困扰的是,我被强迫(或者至少在经过多次尝试之后,我有这样的印象),我必须硬编码,我期待eyeshair的查询参数。

这确实是真的吗?如果有,是否有解决方法?对我来说,这在nosql的上下文中有点奇怪,并且能够存储具有集合中所需的任何属性的文档。

我宁愿让我可以,例如在?之后获取URL的整个部分,对字符串执行split("&")并捕获请求中的任何内容。

有没有办法在Foxx框架内执行此操作?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

我不确定你为什么认为你被迫。唯一的区别应该是指定为queryParam的查询参数将被验证(如果提供了模式)并记录。

您应该只能使用req.queryParams来访问其他查询参数:

router.get(function (req, res) {
  res.json(req.queryParams);
})
.queryParam('documented', joi.number().optional());

GET /?记录= 23 - > {"documented": 23}

GET /?more = 42 - > {"more": "42"}

这假设您使用ArangoDB 3.0并且没有在传统兼容模式下运行为2.8编写的Foxx服务(即您使用的是称为路由器的东西,而不是称为控制器的东西)。

答案 1 :(得分:0)

好的,我设法通过var query_params = req.originalUrl.split("?")[1];找到了我自己的解决方案。然后我用原始查询参数得到了我想要的字符串。从手册:

  

originalUrl:string

     

请求的根相对URL,即原始查询参数后跟的路径(如果有)。