为了账号安全,请及时绑定邮箱和手机立即绑定

Plumier - 在自定义验证中访问时参数属性为 null

Plumier - 在自定义验证中访问时参数属性为 null

有只小跳蛙 2021-12-02 19:31:06
我有一个自定义验证,访问parameter属性为 ,context但值始终为undefined。这是我的代码:function isValidVersion() {    return val.custom(async (val, i) => {        const appIdIdx = i.route.action.parameters.findIndex(x => x.name === "appId")        if (appIdIdx === -1)            throw new Error(`No appId parameter found in ${i.route.controller.name}.${i.route.action.name}`)        const appId = i.ctx.parameters![appIdIdx] //<--- the parameters is undefined        //other code        //    })}我该如何解决?
查看完整描述

1 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

parameters 值仅在验证过程完成后可用,因为它填充了清理/验证的值。


所以是的,您无法parameters在验证过程中访问属性。


仅供参考的parameters属性只是从 http 上下文值中提取的值列表,例如query,headers或body。作为一种解决方法,您可以从ctx属性访问参数的原始数据,例如ctx.request.query或ctx.request.body。


例如,如果appId从您的查询 URL 中提取,您的代码将很简单:


function isValidVersion() {

    return val.custom(async (val, i) => {

        const appId = i.ctx.request.query.appid

        if (!appId)

            throw new Error(`No appId parameter found in ${i.route.controller.name}.${i.route.action.name}`)


        //other code

        //

    })

}


查看完整回答
反对 回复 2021-12-02
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信