我正在使用AdonisJS 4.1开发项目,我在验证数字时遇到问题,这是我在控制器代码中的代码
const validation = await validate(request.all(), {
posts_per_page: required|number|min:0
})
当我尝试用大于0的任何数字填充表单字段时,它总是给出如下错误消息:
number validation failed on posts_per_page
在此之前,对解决此问题的任何帮助将不胜感激。
答案 0 :(得分:2)
这里的主要问题是,默认情况下,HTML表单会将所有字段作为字符串发送。您需要先对其进行消毒using the sanitizer:
const { sanitize } = use('Validator')
const data = sanitize(request.all(), {
posts_per_page: 'to_int',
})
然后,您将可以使用data
代替request.all()
进行验证。
另外,请注意出于安全原因,您应该使用request.only()
而不是request.all()
。
答案 1 :(得分:1)
min
规则计算值的长度(即字符串或数组的长度),而不是值本身。您需要为此使用above
规则。试试
const validation = await validate(request.all(), {
posts_per_page: 'required|number|above:0'
})
答案 2 :(得分:0)
const rules = {
posts_per_page: 'required|number|min:0'
}
const validation = await validate(request.all(), rules)