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