在日常的前端开发工作中,我们常常需要对用户输入的数据进行验证。这时候,我们常常会用到 Joi 这个 JavaScript 的库来对输入的数据进行校验。在实际项目中,我们往往需要对某些字段进行枚举值的检查,而 joi-extension-enums 这个 npm 包就是为了这个目的而生的。
joi-extension-enums 的安装和基本使用
首先我们先来安装 joi 和 joi-extension-enums 这两个 npm 包,可以通过 npm 或者 yarn 来进行安装。在项目根目录下,输入以下命令进行安装:
npm install joi joi-extension-enums
或者
yarn add joi joi-extension-enums
接着,我们就可以在项目中使用这两个包了。
我们可以通过 Joi.extend()
方法来添加对枚举值的支持。比如我们要对一个名为 status
的字段进行枚举值校验,假设其枚举值为 SUCCESS
和 FAILURE
,可以按照以下方式进行:
-- -------------------- ---- ------- ----- --- - --------------- ----- ----------------- - ------------------------------- -- -- --- --- ------------------------------ -- ------ ----- ------ - ------------ ------- ----------------------------- ----------- --- -- ---- ----- ---- - - ------- --------- -- -- ---- ----- - ----- - - ---------------------- -- ------- - ---------------------- ------- - ---- - --------------------- -
在上面的代码示例中,我们用 Joi.string().enum(['SUCCESS', 'FAILURE'])
来指明了该字段的枚举值(即只能是 SUCCESS
或者 FAILURE
)。如果数据里的值不是 SUCCESS
或者 FAILURE
,那么在校验时就会提示错误信息。这样,我们就可以方便地对枚举值进行校验了。
joi-extension-enums 的高级应用
除了上面的基本用法,joi-extension-enums 还支持一些高级用法,比如将多个字段设置在一起进行枚举校验。以下是一个示例:
-- -------------------- ---- ------- ----- --- - --------------- ----- ----------------- - ------------------------------- -- -- --- --- ------------------------------ -- ------ ----- ------ - ------------ ----- ----------------------- ---- ------ ------- ------------------------- - --- ---- ----- -------------------------- ---------- ------------ ---------- --------------- -- --- -- ---- ----- ----- - - ----- ---- ------- --------- -- ----- ----- - - ----- ---- ------- --------- -- ----- ----- - - ----- ---- ------- --------- -- -- ---- ----- - ------ ------ - - ----------------------- ----- - ------ ------ - - ----------------------- ----- - ------ ------ - - ----------------------- -------------------- -- ---- -------------------- -- ---- ----------------------------- -- --------- ---- -- --- -- ------ -------- ---------
在上述示例中,我们定义了两个字段 type
和 status
。type
字段的枚举值是 A
、B
、C
,而 status
字段的枚举值则和 type
字段紧密关联。如果 type
为 A
,那么 status
的允许值是 INIT
、PENDING
、SUCCESS
中的一个;否则,status
应该被禁止,即不出现在数据对象中。这样,我们可以方便地对复杂的数据进行校验。
总结
joi-extension-enums 是一个非常实用的 npm 包,能够方便地对枚举值进行校验。同时,它支持类似于 when
的高级用法,能够方便地对多个字段进行联合校验。如果你的项目需要对枚举值进行校验,那么不妨尝试一下 joi-extension-enums,它可以大大减轻你的开发压力,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60065f8f238a385564ab6f38