在 Node.js 应用程序开发过程中,我们通常使用 Mongoose 数据库对象建模来定义数据模型。mongoose-to-joi-translator 是一个 npm 包,它可以自动将 Mongoose 数据模型转换为 Joi 校验模式。这样,我们就可以在开发过程中使用更有效的方式来定义 API 数据格式和输入参数限制,减少代码量并提高代码的可维护性。
安装及使用
安装命令如下:
--- ------- -------------------------- ------
引入模块:
----- ----------------------- - --------------------------------------
接下来,让我们看看它是如何工作的。假设我们有一个 Mongoose 模型如下:
----- -------- - -------------------- ----- ---------- - --- ----------------- ------ - ----- ------- --------- ---- -- --------- - ----- ------- --------- ---- -- --------- - ---------- - ----- ------ -- --------- - ----- ------ - - --- -------------- - ---------------------- ------------
然后,我们可以使用 MongooseToJoiTranslator 将该模型转换为 Joi 校验模式:
----- --- - --------------- ----- ----------------------- - -------------------------------------- ----- ---- - ------------------------- ----- ------------- - ------------------------------ -- ---- --------------------- ----- ----- ---- -- - --- - -- ------ ----- - ----- - - ---------------------- --------------- -- ------- - ---------------------- ------ ------------------------ --- - ---- - -- ----------- ------------- ------- -------------------------- ---------- - - ----- ----- - ------------------- ------------------------------ ------ -------- - ---
我们使用了 joi-validate 函数对输入参数进行校验,并根据校验结果进行下一步操作。注意,此处使用的是 joi 的 validate 函数,而不是 express-validator 的中间件。Joi 将确保输入参数与 Mongoose 模型的定义相匹配,否则抛出错误并阻止处理函数执行。
附加配置项
我们可以使用选项对象来配置 MongooseToJoiTranslator 的输出。
选项值如下:
include
:要包含的模式字段数组,如果提供,只包含该数组中的字段。exclude
:要排除的模式字段数组。required
:通过在选项中设置required
属性,可以强制将校验模式中的所有模式字段设置为必需的。
示例如下:
----- ----------------------- - -------------------------------------- ----- ---- - ------------------------- -- --- ------- - ------------------- ---- ------- ---- ----- ------------- - ----------------------------- - -------- --------- --------------------- --------- --------- ---
在上面的示例中,我们只包括了 email
和 fullName.lastName
字段,并声明 email
字段为必需的。其他字段将被排除。
总结
借助 npm 包 mongoose-to-joi-translator,将 Mongoose 数据库对象建模转换为 Joi 校验模式不再麻烦。该包可显着简化 Node.js 应用程序的开发,同时提高代码的可读性和可维护性。此外,该包的选项提供了附加灵活性和配置选项,能够满足开发人员的更多需求。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60057bc381e8991b448eb9d6