要解决Adonis资源路由中验证器不起作用的问题,您可以按照以下步骤进行操作:
UserValidator
的验证器类:const UserValidator = use('App/Validators/UserValidator')
Route.resource('users', 'UserController')
.validator(new UserValidator())
validator
方法。例如,UserValidator
类可能如下所示:class UserValidator {
get rules () {
return {
username: 'required|unique:users',
email: 'required|email|unique:users',
password: 'required'
}
}
}
validate
方法来验证请求数据。例如,假设您有一个名为UserController
的控制器类,其中包含一个store
方法:const User = use('App/Models/User')
class UserController {
async store ({ request, response }) {
const data = request.only(['username', 'email', 'password'])
try {
await request.validate(UserValidator.rules) // 使用验证器验证数据
const user = await User.create(data)
return response.json(user)
} catch (error) {
return response.status(400).json(error.messages)
}
}
}
请注意,本解决方案仅适用于Adonis v4版本。如果您使用的是Adonis v5版本,应采用不同的方法来使用验证器。