我有一个自定义验证,访问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
//
})
}
添加回答
举报
0/150
提交
取消