Foxx 服务阵列处理
Posted
技术标签:
【中文标题】Foxx 服务阵列处理【英文标题】:Foxx Service Array handling 【发布时间】:2017-04-14 08:57:54 【问题描述】:我有一个包含文档的数据库,我想从中检索一些数据,为 Foxx 服务提供一组键。它使用单个字符串工作,但我缺少关于实现数组的一些内容。
更新
router.get('/keys', function (req, res)
const keys = db._query(aql`
FOR huis IN test
FILTER huis._key in $req.queryParams.keys
RETURN
'adres': huis.adres,
'postcode': huis.postcode,
'plaats': huis.plaats
`);
res.send(keys);
)
.queryParam('keys', joi.array().required(), 'query to search for')
.response(joi.array()
.items(
joi.string().required()
)
.required(), 'List of house keys.')
.summary('List house keys')
.description('Makes LAT LNG from house keys.');
joi.array() 得到了 Arango 在服务概览页面上的一个很好的解释,如下所示。但我处理错了,因为它返回 404。
【问题讨论】:
【参考方案1】:如果要传递数组,则需要使用 queryParam 或 bodyParam 而不是 pathParam。
我建议将您的路由器路径更改为router.get('/keys', function (req, res)
,然后以req.queryParams.keys
访问该值。
当您通过 queryParam 发送数组时,您有几个选项,/keys?keys=1234,5678
或 /keys?keys=1234&keys=5678
。
【讨论】:
谢谢,现在我收到了"query parameter \"keys\" must be an array"
的消息,所以数组处理仍然不正常。 joi 需要数组,API 页面显示了一个数组字段,我提供了一个数组,然后它说它需要是一个数组..
当我把它放在我应该用换行符添加键的地方时,它可以工作:["374875","387781"]
好了,有很多方法可以用参数表示一个数组,很高兴你能用它。
我很欣赏它,它有效,但它不是“解决方案”,因为这看起来不太好:http://localhost:8529/_db/vbo/geo/keys?keys=%5B%22374875%22%5D
所以我仍在试图弄清楚如何处理数组..
看看this stack overflow question,这取决于 Foxx 如何将其识别为数组,但这是 REST API 和数组作为查询参数通常采用的策略。您始终可以将它们移动到正文中,但这需要您使用 joi 表示法在正文中按预期标记变量。以上是关于Foxx 服务阵列处理的主要内容,如果未能解决你的问题,请参考以下文章