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

7lrncoxx  于 2023-08-06  发布在  Go
关注(0)|答案(2)|浏览(115)

根据我自己的知识,你可以在mongoose模式中做几乎所有你可以用express-validator做的验证。因此,请我可以只使用 Mongoose 或有情况下,我将需要使用快递验证太多,即使我只创建新的文件

kq4fsx7k

kq4fsx7k1#

实际上,您可以像使用express-validator一样,在mongoose模式中执行几乎所有的验证。Mongoose现在也支持在update上进行验证,所以您可以开始了。
让我指出两个例子:

  • 如果验证逻辑很简单,规模很小,那么mongoose验证就没有问题。但在验证规则复杂、字段多的情况下,express-validator可能是更好的选择。

如果mongoose内置的验证器不足以满足您的验证逻辑,则必须创建自定义的验证器。您将不得不添加更多的代码行,最后得到一个太大的mongoose模型文件。
就我而言,我希望模型js文件尽可能干净。Express-validator是validator.js的 Package 器,它提供了验证器(例如isAlphanumeric、isEmail等),这样可以保存大量的代码行。因此,您可以将验证逻辑保存在单独的文件中,并使代码更加整洁和有组织。

*另一点是关于代码执行流

Express-validator是一个验证中间件。当您通过发布请求发送表单时,可以运行验证逻辑,如果出现任何错误,您将向客户端返回错误消息,而无需到达控制器或服务代码。
同样,从我的Angular 来看,运行控制器或其他服务代码(取决于您的体系结构)是一种糟糕的做法,而从客户端发送的数据没有经过验证或净化。使用Express-validator,当代码执行流到达控制器逻辑时,这意味着您要插入到数据库中的数据得到了良好的检查和清理。
在不使用任何验证中间件的情况下,您必须运行所有的控制器逻辑,并等待可能出现的验证错误,只有当流程到达mongoose保存或update方法时才会出现。假设您的控制器包括十几个服务功能。如果是因为数据无效而取消,为什么还要运行所有这些逻辑?
总之,这两种方法都可以满足您的验证规则。在我看来,使用Express-validator可以获得更干净、更有组织的代码,以及更好、更安全的代码执行流。

brjng4g3

brjng4g32#

使用express-validator可以在将来选择不同的数据库时提供更多的灵活性和独立性。如果你想从Mongo DB转移到任何其他数据库。它允许您直接在Express.js路由和处理程序中执行数据验证和清理,而无需绑定到特定的数据库或ORM(如Mongoose)。

相关问题