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

我有一个自定义验证,访问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

        //

    })

}

我该如何解决?


有只小跳蛙
浏览 177回答 1
1回答

明月笑刀无情

parameters 值仅在验证过程完成后可用,因为它填充了清理/验证的值。所以是的,您无法parameters在验证过程中访问属性。仅供参考的parameters属性只是从 http 上下文值中提取的值列表,例如query,headers或body。作为一种解决方法,您可以从ctx属性访问参数的原始数据,例如ctx.request.query或ctx.request.body。例如,如果appId从您的查询 URL 中提取,您的代码将很简单:function isValidVersion() {&nbsp; &nbsp; return val.custom(async (val, i) => {&nbsp; &nbsp; &nbsp; &nbsp; const appId = i.ctx.request.query.appid&nbsp; &nbsp; &nbsp; &nbsp; if (!appId)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw new Error(`No appId parameter found in ${i.route.controller.name}.${i.route.action.name}`)&nbsp; &nbsp; &nbsp; &nbsp; //other code&nbsp; &nbsp; &nbsp; &nbsp; //&nbsp; &nbsp; })}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript