You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArangoDB Foxx微服务如何将路由queryParam转换为body参数

Foxx路由参数从queryParam转为请求体传递的实现方案

原有代码问题梳理

  • 重复嵌套了db._query(aql语句,存在语法错误
  • 未显式定义请求体的Joi校验结构,Foxx无法自动解析req.body对应字段
  • 存在多个未使用的冗余变量声明

正确实现代码

router.post('/PersonInformation', function (req, res) {
    const keys = db._query(aql`
    FOR p IN Personal
        FILTER (p.stateId IN ${req.body.statePar} OR IS_NULL(${req.body.statePar}))
        AND p.empDate >= TO_NUMBER(${req.body.fromDatePar}) AND p.empDate <= TO_NUMBER(${req.body.toDatePar})
        RETURN p
    `);
    res.send(keys);
})
// 定义请求体结构与校验规则
.body(joi.object({
    statePar: joi.array().default(null),
    fromDatePar: joi.string().required(),
    toDatePar: joi.string().required()
}), 'Personal information query parameters')
.response(joi.array().items(
    joi.string().required()
).required(), 'List of entry keys.')
.summary('List entry keys')
.description('Assembles a list of keys of entries in the collection.');

改动说明

  • 替换原有.queryParam配置为.body配置,传入Joi对象声明请求体的字段结构、校验规则,和原有query参数的校验逻辑保持一致
  • 修正语法错误,删除冗余的重复查询语句和未使用变量
  • 路由处理函数中直接从req.body中读取对应字段即可,原有数据过滤逻辑无需修改

内容的提问来源于stack exchange,提问作者Ghasemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:48:04