【问题标题】:Foxx Service Array handlingFoxx 服务阵列处理
【发布时间】: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。

【问题讨论】:

    标签: arangodb foxx


    【解决方案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 表示法在正文中按预期标记变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多