Foxx:如何不必预先定义 queryParams?
Foxx: How not having to define queryParams up front?
我正在加快 ArangoDB 和 Foxx 的速度,到目前为止,体验非常好!但是我有一个问题:
对于 Foxx 路由器,可以指定 queryParams,例如 /graph/nodes?eyes=blue&hair=blond
。
但是让我困扰的是我被迫(或者至少,在几次尝试之后我有这样的印象)我必须硬编码我期待 eyes
和 [=12= 的查询参数].
这是真的吗?如果是,是否有解决方法?对我来说,这在 nosql 的上下文中有点奇怪,并且能够在集合中存储具有任何想要的属性的文档。
我宁愿我可以,例如在 ?
之后获取 URL 的整个部分,对字符串执行 split("&")
并捕获请求的任何部分。
有没有办法在 Foxx 框架内做到这一点?
如有任何帮助,我们将不胜感激!
好的,我通过使用 var query_params = req.originalUrl.split("?")[1];
设法自己找到了解决方案。然后我用原始查询参数得到我想要的字符串。来自手册:
originalUrl: string
Root-relative URL of the request, i.e. path followed by the raw query parameters, if any.
我不确定你为什么认为自己是被迫的。唯一的区别应该是指定为 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 服务(即您使用的是路由器,而不是控制器)。
我正在加快 ArangoDB 和 Foxx 的速度,到目前为止,体验非常好!但是我有一个问题:
对于 Foxx 路由器,可以指定 queryParams,例如 /graph/nodes?eyes=blue&hair=blond
。
但是让我困扰的是我被迫(或者至少,在几次尝试之后我有这样的印象)我必须硬编码我期待 eyes
和 [=12= 的查询参数].
这是真的吗?如果是,是否有解决方法?对我来说,这在 nosql 的上下文中有点奇怪,并且能够在集合中存储具有任何想要的属性的文档。
我宁愿我可以,例如在 ?
之后获取 URL 的整个部分,对字符串执行 split("&")
并捕获请求的任何部分。
有没有办法在 Foxx 框架内做到这一点?
如有任何帮助,我们将不胜感激!
好的,我通过使用 var query_params = req.originalUrl.split("?")[1];
设法自己找到了解决方案。然后我用原始查询参数得到我想要的字符串。来自手册:
originalUrl: string
Root-relative URL of the request, i.e. path followed by the raw query parameters, if any.
我不确定你为什么认为自己是被迫的。唯一的区别应该是指定为 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 服务(即您使用的是路由器,而不是控制器)。