我正在加快ArangoDB和Foxx的速度,到目前为止,经验非常棒!不过我有一个问题:
对于Foxx路由器,可以指定queryParams,例如/graph/nodes?eyes=blue&hair=blond
。
令我感到困扰的是,我被强迫(或者至少在经过多次尝试之后,我有这样的印象),我必须硬编码,我期待eyes
和hair
的查询参数。
这确实是真的吗?如果有,是否有解决方法?对我来说,这在nosql的上下文中有点奇怪,并且能够存储具有集合中所需的任何属性的文档。
我宁愿让我可以,例如在?
之后获取URL的整个部分,对字符串执行split("&")
并捕获请求中的任何内容。
有没有办法在Foxx框架内执行此操作?
非常感谢任何帮助!
答案 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,即原始查询参数后跟的路径(如果有)。