Arangodb Foxx:如何不必预先定义查询参数?

Arangodb Foxx:如何不必预先定义查询参数?,arangodb,foxx,Arangodb,Foxx,我正在用ArangoDB和Foxx让自己跟上进度,到目前为止,体验非常棒!不过,我有一个问题: 对于Foxx路由器,可以指定查询参数,例如/graph/nodes?eyes=blue&hair=blond 然而,让我困扰的是,我被迫(或者至少在几次尝试之后,我有了这样的印象)必须硬编码,我希望查询眼睛和头发的参数 这是真的吗?如果是的话,有没有解决办法?对于我来说,这在nosql环境中有点奇怪,因为它能够在集合中存储具有所需属性的文档 我希望我能够,例如,在?之后获取URL的整个部分,对字符串执

我正在用ArangoDB和Foxx让自己跟上进度,到目前为止,体验非常棒!不过,我有一个问题:

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

然而,让我困扰的是,我被迫(或者至少在几次尝试之后,我有了这样的印象)必须硬编码,我希望查询
眼睛
头发
的参数

这是真的吗?如果是的话,有没有解决办法?对于我来说,这在nosql环境中有点奇怪,因为它能够在集合中存储具有所需属性的文档

我希望我能够,例如,在
之后获取URL的整个部分,对字符串执行
拆分(&“
),并捕获请求的任何部分

在Foxx框架中有没有这样做的方法


任何帮助都将不胜感激

好的,我通过使用
var query_params=req.originalUrl.split(“?”[1],自己设法找到了解决方案。然后,我用原始查询参数获取所需的字符串。从手册中:

原文:字符串

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


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

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

router.get(function (req, res) {
  res.json(req.queryParams);
})
.queryParam('documented', joi.number().optional());
GET/?documented=23->
{“documented”:23}

GET/?more=42->
{“more”:“42”}


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

亲爱的Alan Plum,感谢您详细的回答!那太好了,我没有意识到。我通过使用
req.originalUrl
使其工作,我可以在
之后从中分割整个部分。但你如何呈现它确实是我想要的,但不知何故错过了它可以像这样工作。