在前端开发中,我们经常需要对对象进行校验,判断对象是否符合特定的要求。这个过程中,我们需要一个方便易用、高效可靠的工具来简化操作,这就是 required-keys
。
required-keys
是一个 npm 包,它提供了一种快速而又方便的方法来验证对象是否拥有必需的键。它可以用来限制 API 调用的输入参数,表单输入数据的提交,甚至可以用来验证传入的配置参数是否正确。
基本使用方法
安装
required-keys
的安装非常方便,执行以下命令即可安装:
npm install required-keys
引入
在代码中引入 required-keys
。
const requiredKeys = require('required-keys');
执行检查
使用方法非常简单。让我们假设我们有一个对象,名为 userData
,它包含了用户的一些基本信息。
let userData = { name: 'John Doe', age: 30, email: 'john.doe@example.com' }
在这个例子中,我们希望 userData
对象包含 name
、age
、email
这三个键。如果不存在这些键中的任何一个,我们需要给出相应的错误信息。
下面是检查的代码:
requiredKeys(userData, ['name', 'age', 'email']);
如果 userData
中不包含任何一个指定的键,required-keys
会抛出一个错误并中止程序,如下所示:
Error: userData is missing the following required keys: name, age, email
复合键
我们也可以使用复合键来检查对象。一个复合键是一个由多个键组成的键组合。在一个对象中检查复合键时,它会检查所有的键是否都存在。
让我们假设我们现在有一个更加复杂的对象,名为 userObject
,它包含了用户的个人信息和地址信息,如下所示:
-- -------------------- ---- ------- --- ------- - - --------- - ----- ----- ----- ---- -- -- -------- - ------- ---- ---- ---- ----- ---------- ------ ----- ---- ------- - -
在这个例子中,我们希望 userObj
对象包含 personal.name
、personal.age
、address.street
、address.city
、address.state
、address.zip
这六个键。如果不存在这些键中的任何一个,我们需要给出相应的错误信息。
下面是检查的代码:
requiredKeys(userObj, ['personal.name', 'personal.age', 'address.street', 'address.city', 'address.state', 'address.zip']);
如果 userObj
中不包含任何一个指定的键,required-keys
会抛出一个错误并中止程序,如下所示:
Error: userObj is missing the following required keys: personal.name, personal.age, address.street, address.city, address.state, address.zip
高级使用方法
允许选填键
有时候,我们希望对象中的某些键是可选的。在这种情况下,我们可以为选填键创建一个可以选填的数组。
让我们假设我们有一个对象,名为 formData
,它包含了用户提交的表单信息。
let formData = { name: 'John Doe', age: 30, email: 'john.doe@example.com', phone: '555-1234' }
在这个例子中,name
、age
、email
是必填项,而 phone
是可选项。
下面是检查的代码:
requiredKeys(formData, ['name', 'age', 'email'], ['phone']);
如果 formData
中不包含任何一个指定的键,required-keys
会抛出一个错误并中止程序,如下所示:
Error: formData is missing the following required keys: name, age, email
如果我们添加 ['phone']
,那么 phone
将变成可选键:
requiredKeys(formData, ['name', 'age', 'email'], ['phone']);
如果现在我们给 formData
对象添加一个 phone
键,那么将不会抛出任何错误。但如果 formData
对象中依然存在 name
、age
、email
之一或多个键不存在,错误将继续抛出。
自定义错误消息
我们可以通过向 requiredKeys
函数的第四个参数中添加错误消息来自定义错误消息。这个错误消息将会替代默认错误消息。
让我们以下面的对象为例:
let errorObject = { name: 1 };
我们可以向 requiredKeys
函数的第四个参数中添加任意错误消息,如下所示:
requiredKeys(errorObject, ['name'], [], 'My custom error message');
当 errorObject
不包含 name
时,requiredKeys
会抛出自定义错误消息:
Error: My custom error message
使用示例
现在,我们来使用一个完整的示例来展示 required-keys
的功能。
首先,让我们看一下一些模拟数据,这些数据表示了我们从某个 API 中接收到的数据结构。
-- -------------------- ---- ------- -- ---- --- ------- - - ----- - ----- ----- ----- ---- --- ------ ----------------------- -------- - ------- ---- ---- ---- ----- ---------- ------ ----- ---- ------- -- ------ ---------- - --
接下来,我们要使用 required-keys
验证 apiData
对象是否包含所有必需的键。
// 验证键是否存在 requiredKeys(apiData, ['user', 'user.name', 'user.age', 'user.email', 'user.address', 'user.phone'], ['user.address.secondLine']);
这行代码将会验证所有必需的键是否存在。在这个例子中,user.address.secondLine
是可选键。如果存在错误,required-keys
将会抛出下面的错误:
Error: apiData is missing the following required keys: user, user.name, user.age, user.email, user.address, user.phone
我们可以使用可选键来检查 user.address.secondLine
是否存在:
// 使用可选键检查 user.address.secondLine 是否存在 requiredKeys(apiData, ['user', 'user.name', 'user.age', 'user.email', 'user.address', 'user.phone'], ['user.address.secondLine']);
如果 apiData
包含所有必需的键,则代码将会正常运行;否则,将会抛出错误。
总结
required-keys
是一个非常有用的 npm 包,它能够简化对象校验的操作。这个工具可以用来限制 API 调用的输入参数、表单输入数据的提交、甚至可以用来验证传入的配置参数是否正确。在使用 required-keys
时,我们需要传入需要校验的对象,以及包含必需键的数组以及可选键(如果有)。校验失败时,required-keys
会抛出一个错误,以便我们快速地定位问题并检查代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/88278