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 服务阵列处理的主要内容,如果未能解决你的问题,请参考以下文章

raid5阵列条带分析和阵列重组过程

XPC 服务阵列崩溃

阵列处理机

服务器进入主板阵列卡怎么进去?

意外断电造成RAID 5阵列卡数据故障的恢复方法

HP Proliant DL380 G7服务器,操作系统、阵列的安装顺序