📜  如何在 Node.js 中使用 joi 模块验证数据?

📅  最后修改于: 2022-05-13 01:56:18.356000             🧑  作者: Mango

如何在 Node.js 中使用 joi 模块验证数据?

Joi 模块是一种流行的数据验证模块。该模块根据模式验证数据。有各种函数,如 optional()、required()、min()、max() 等,使其易于使用,并且是用于验证数据的用户友好模块。
介绍:

  1. 它易于上手且易于使用。
  2. 它是广泛使用和流行的数据验证模块。
  3. 它支持基于模式的验证。

joi模块的安装:

  1. 您可以访问链接安装 joi 模块。您可以使用此命令安装此软件包。
    npm install joi
  2. 安装 multer 后,您可以使用命令在命令提示符中检查您的 joi 版本。
    npm ls joi
  3. 之后,您可以创建一个文件夹并添加一个文件,例如 index.js,要运行此文件,您需要运行以下命令。
    node index.js
  4. 需要模块:您需要使用这些行在文件中包含 joi 模块。
    const Joi = require('joi');

文件名:index.js

javascript
const Joi = require('joi')
  
//User-defined function to validate the user
function validateUser(user)
{
    const JoiSchema = Joi.object({
      
        username: Joi.string()
                  .min(5)
                  .max(30)
                  .required(),
                    
        email: Joi.string()
               .email()
               .min(5)
               .max(50)
               .optional(), 
                 
        date_of_birth: Joi.date()
                       .optional(),
                         
        account_status: Joi.string()
                        .valid('activated')
                        .valid('unactivated')
                        .optional(),
    }).options({ abortEarly: false });
  
    return JoiSchema.validate(user)
}
  
const user = {
    username: 'Pritish',
    email: 'pritish@gmail.com',
    date_of_birth: '2020-8-11',
    account_status: 'activated'
}
  
response = validateUser(user)
  
if(response.error)
{  
    console.log(response.error.details)
}
else
{
    console.log("Validated Data")
}


javascript
var user = {
    username: 'GH',
    email: 'demo@',
    date_of_birth: '2020-20-48',
    account_status: 'abcd'
};


注意:在上面的程序中 abortEarly 设置为 false 以确保如果有多个错误,则所有错误都显示在终端中。如果设置为 true,则程序的执行将在遇到第一个错误时立即停止,并且只会在终端中显示该错误。

运行程序的步骤:

  1. 项目结构将如下所示:

  2. 确保您已使用以下命令安装了 joi 模块:
    npm install joi
  3. 使用以下命令运行 index.js 文件:
    node index.js
  4. 现在,如果没有发生错误,即验证用户数据,则会产生以下输出:

  5. 现在,如果我们针对无效数据验证用户,如下所示,那么将产生以下输出:

javascript

var user = {
    username: 'GH',
    email: 'demo@',
    date_of_birth: '2020-20-48',
    account_status: 'abcd'
};

If abortEarly is set to true the following output will be produced :

这就是使用 joi 模块验证数据的方法。市场上还有其他用于验证的模块,例如 express-validator 等。