【问题标题】:Validator not workind in Adonis验证器在 Adonis 中不起作用
【发布时间】:2023-03-21 03:43:01
【问题描述】:

我在我的代码中设置了一些验证,我想使用 Adonis 框架中的 Validator。我按照官方文档中的所有步骤进行操作,但没有任何效果。

我倾向于遵循官方文档。 通过 CLI 安装验证器 使用 adonis make:validator User 创建我的验证器类 制定了我的规则 在我的路线中附加验证器

这是我的路线:

Route.resource('users', 'UserController')
  .apiOnly() 
  .middleware('auth')
  .validator(new Map(
    [['users.store'], ['User']
  ]
  ))

我期待一些消息,但只是返回 knex erros。

编辑:是的,我在提供中注册了验证器。

【问题讨论】:

  • 您能否提供更多信息以说明问题所在?添加错误截图

标签: node.js validation adonis.js


【解决方案1】:

在使用验证器时,最好创建一个验证器类并为这些规则编写规则和消息,然后将该验证器类附加到您的路由中。由于 adonis.js 使用指示性库进行验证,我建议您访问 https://indicative.adonisjs.com/guides/master/introduction 并查看如何编写规则和消息。

在您的应用程序或 src 文件夹中创建一个验证器文件夹,确保您安装了 adonis 验证器

创建一个 login.js

class Login {
  get rules () {
    return {
        email: 'required|email',
        password: 'required'
    }
  }

  get messages () {
    return {
      'email.required': 'You must provide a email address.',
      'email.email': 'You must provide a valid email address.',
      'password.required': 'You must provide password.'
    }
  }

  async fails (errorMessages) {

    this.ctx.session.flash({ 
        alert: {
            message: errorMessages[0].message,
            type: 'warning'
        }
    });
    this.ctx.response.redirect('back');
    return
  }
}

然后在路由中像这样应用验证器

 Route.post('/login', 'AuthController.login').validator(['login'])

这种技术还减少了样板代码。您可以编写验证器并应用于多个路由或路由组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    相关资源
    最近更新 更多