猫鼬验证和使用 express-validator 有什么区别

Sul*_*aba 3 mongoose express-validator

根据我自己的知识,您可以在 mongoose 模式中进行几乎所有可以使用 express-validator 进行的验证。所以我可以只使用猫鼬吗,或者即使我只创建新文档,我也需要使用 express-validator

dim*_*nes 6

实际上,您可以像使用 express-validator 一样在 mongoose 模式中执行几乎所有验证。Mongoose 现在也支持验证update,所以你很高兴。

我说两个案例:

  • 如果验证逻辑简单小规模,猫鼬验证就没有问题。但是对于复杂的验证规则和多个字段,那么 express-validator 可能是更好的选择。

    如果 mongoose内置验证器不足以满足您的验证逻辑,您必须创建自定义验证器。您将不得不添加更多的代码行,最终会得到一个太大的猫鼬模型文件。

    就我而言,我希望模型 js 文件尽可能干净。快速验证器,这是一个包装 validator.js报价验证(例如isAlphanumeric,ISEMAIL等等),它可以节省你大量的代码行。因此,您可以将验证逻辑保存在单独的文件中,并使您的代码更加整洁有序。

  • 另一点是关于代码执行流程
    Express-validator 是一个验证中间件。当您通过 post 请求发送表单时,您可以运行验证逻辑,如果出现任何错误,您将错误消息返回给客户端,而无需到达控制器或服务代码。

    同样,在我看来,运行控制器或其他服务代码(取决于您的架构)是一种不好的做法,从客户端发送的数据未经验证或清理。使用 Express-validator,当代码执行流到达控制器逻辑时,这意味着您要插入到数据库中的数据会得到很好的检查和清理。

    在不使用任何验证中间件的情况下,您必须运行所有控制器逻辑,并等待可能的验证错误,只有当流程到达 mongoose 保存或更新方法时。想象一下您的控制器包括十几个服务功能。如果由于数据无效而取消它,为什么要运行所有这些逻辑?

总之,这两种方法都可以满足您的验证规则。在我看来,使用 Exspress-validator 以获得更清晰、更有组织的代码,以及更好、更安全的代码执行流程。