npm 包名:mongoose-to-joi-translator 使用教程

阅读时长 4 分钟读完

在 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 属性,可以强制将校验模式中的所有模式字段设置为必需的。

示例如下:

在上面的示例中,我们只包括了 emailfullName.lastName 字段,并声明 email 字段为必需的。其他字段将被排除。

总结

借助 npm 包 mongoose-to-joi-translator,将 Mongoose 数据库对象建模转换为 Joi 校验模式不再麻烦。该包可显着简化 Node.js 应用程序的开发,同时提高代码的可读性和可维护性。此外,该包的选项提供了附加灵活性和配置选项,能够满足开发人员的更多需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60057bc381e8991b448eb9d6

纠错
反馈