1

我正在加快使用 ArangoDB 和 Foxx 的速度,到目前为止,体验非常棒!然而我有一个问题:

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

但困扰我的是我被迫(或者至少,在几次尝试后我有这样的印象)我必须硬编码我期望查询参数eyeshair

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

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

有没有办法在 Foxx 框架内做到这一点?

任何帮助将不胜感激!

4

2 回答 2

2

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

您应该能够仅用于req.queryParams访问其他查询参数:

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

获取 /?documented=23 ->{"documented": 23}

获取 /?more=42 ->{"more": "42"}

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

于 2016-08-04T15:50:04.730 回答
0

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

原始网址:字符串

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

于 2016-08-04T07:12:58.437 回答