📜  adonis 验证器可选 - TypeScript (1)

📅  最后修改于: 2023-12-03 14:39:03.050000             🧑  作者: Mango

Adonis 验证器可选 - TypeScript

Adonis 是一款基于 Node.js 开发的 Web 框架,其中包含了强大的验证器,方便我们对用户输入的数据进行验证。本文介绍了如何使用 TypeScript 来使用 Adonis 验证器和如何自定义验证规则。

安装 Adonis 验证器

在安装 Adonis 验证器之前,我们需要先安装 Adonis。可以参考官方文档安装:https://adonisjs.com/docs/4.1/installation

接着,可以使用 npm 或者 yarn 安装 Adonis 验证器:

npm install @adonisjs/validator
yarn add @adonisjs/validator
使用 Adonis 验证器

首先,我们需要引入 Adonis 验证器:

import { schema, rules } from '@adonisjs/validator'

之后,我们可以使用 schema.create 方法来创建验证规则,例如:

const validationSchema = schema.create({
  email: schema.string({}, [
    rules.email(),
  ]),
  password: schema.string({}, [
    rules.minLength(6),
    rules.maxLength(20),
  ]),
})

这里我们创建了一个验证规则,验证 email 和 password 字段是否符合我们的要求。具体的规则可以上官方文档查看:https://adonisjs.com/docs/4.1/validation-basics

然后,我们可以使用 await validate 方法来验证数据是否符合规则:

try {
  const validatedData = await request.validate({
    schema: validationSchema,
  })

  // 处理验证成功的逻辑
} catch (error) {
  // 处理验证失败的逻辑
}

在这个例子中,我们使用了 request.validate 方法来验证数据。如果验证成功,validatedData 会包含验证后的数据,可以直接拿去使用。如果验证失败,会抛出错误,我们可以在 catch 中处理这个错误。

自定义验证规则

除了 Adonis 提供的默认验证规则,我们还可以自定义验证规则。例如,我们需要验证一个字符串是否是纯数字。我们可以这样定义规则:

rules.define('integer', async (value, _, { pointer, errorReporter }) => {
  if (/^\d+$/.test(value)) {
    return
  }
  
  errorReporter.report(pointer, 'integer', '只能输入纯数字')
})

然后就可以在验证规则中使用这个自定义规则了:

const validationSchema = schema.create({
  age: schema.string({}, [
    rules.integer(),
  ]),
})

这里我们定义了一个叫做 integer 的验证规则,用于验证一个字符串是否是纯数字。当验证失败时,会报出 '只能输入纯数字' 这个错误信息。

小结

本文介绍了如何使用 TypeScript 来使用 Adonis 验证器和如何自定义验证规则。Adonis 的验证器非常强大,可以帮助我们轻松地对用户输入的数据进行验证,确保数据的正确性。同时,自定义规则也使得我们能够根据实际情况,定义符合我们自己需求的规则。