Joi 是一个流行的 Node.js 库,用于验证数据的格式和内容。Hapi.js 是一个构建 Web 应用程序的框架,其中包含了 Joi 库的使用。但是,有些情况下我们需要手动编写 Joi 的验证规则,这时候就可以使用 enjoi 插件,它可以从 JSON 对象中自动生成 Joi 验证规则,方便开发人员快速地创建验证规则。
安装 enjoi
首先,我们需要在项目中安装 enjoi。打开终端,进入项目根目录,执行以下命令:
npm install enjoi
安装完成后,我们就可以在代码中使用 enjoi 了。
使用 enjoi
enjoi 提供了一个 parse() 函数,它可以从 JSON 对象中自动生成 Joi 验证规则。下面是 enjoi 的基本用法:
-- -------------------- ---- ------- ----- ----- - ----------------- ----- --- - --------------- ----- ------ - ------------- ----- ------------------------ ---- -------------------------------------------------- ------- -------------------------- --------------------- --- -- ----- --- -------- ----- ---- - - ----- ----- ---- --- ------- ------- -- ----- ------ - ---------------------- -- -------------- - --------------------------------------------- -- ------ - ---- - ---------------------- -- ------ -
在上面的示例中,我们使用 enjoi 的 parse() 函数从 JSON 对象中创建了一个 Joi 验证规则,然后使用这个验证规则验证了一份数据,如果数据格式正确,则输出“数据格式正确”;如果数据格式错误,则输出错误信息。
使用 JSON 定义 Joi 验证规则
我们可以使用 JSON 对象来定义我们的 Joi 验证规则。下面是一个简单的示例:
-- -------------------- ---- ------- - ------- - ------- --------- ----------- ---- -- ------ - ------- --------- ---------- ----- ------ --- ------ --- ----------- ---- -- --------- - ------- --------- -------- -------- ---------- ----------- ---- - -
在上面的示例中,我们使用了如下格式的 JSON 对象来定义我们的 Joi 验证规则:
- 对象的每个属性表示要验证的数据的一个属性;
- 属性的值是一个对象,表示该属性的验证规则;
- 对象中的键值对表示该属性的验证条件。
可以看到,我们的 JSON 对象与我们在之前使用 enjoi.parse() 函数生成的验证规则非常类似,这意味着我们可以轻松地使用 JSON 来自动生成 Joi 验证规则。
让我们使用上面的 JSON 对象来创建 Joi 验证规则:
-- -------------------- ---- ------- ----- ------ - ------------- ------- - ------- --------- ----------- ---- -- ------ - ------- --------- ---------- ----- ------ --- ------ --- ----------- ---- -- --------- - ------- --------- -------- -------- ---------- ----------- ---- - ---
现在,我们已经成功地使用 JSON 对象创建了一个 Joi 验证规则。
高级用法
enjoi 还提供了许多高级用法,例如:
自定义验证规则
可以使用 enjoi.custom() 函数来自定义验证规则:
-- -------------------- ---- ------- ----- ------ - - ----- - ----- --------- ---------- ----- --------- ----- -- ---- - ----- --------- --------- ----- ------- --------------------- -- -- ----- ------ - --------------------
在上面的示例中,我们在验证规则中定义了一个自定义验证规则,使用了 Joi.number().min(18) 来验证 age 属性的值是否大于等于 18。
引用其他验证规则
可以使用 $ref 属性来引用其他验证规则:
-- -------------------- ---- ------- ----- ------ - - ----- - ----- --------- --------- ----- -- ---- - ----- --------- --------- ----- ------- -------------------------------------- -- ------- - ----- --------- -------- --- -- -- ----- ------ - --------------------
在上面的示例中,我们使用了 $ref('$.minAge') 来引用 minAge 属性。这可以让我们在定义验证规则时避免重复代码。
总结
enjoi 插件可以帮助开发人员从 JSON 对象中自动生成 Joi 验证规则,减轻编写验证规则的工作量。它提供了许多高级用法,使我们能够灵活地定制验证规则。如果你是一个 Hapi.js 开发人员,enjoi 绝对值得一试。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ab59d148841e989472d149