我需要将 @hapi/joi 与 mongoose 一起使用吗?

Rom*_*kyi 3 mongoose node.js joi

我需要使用@hapi/joiwith吗mongoose

据我了解@hapi/joi用于验证 HTTP 请求(标头、参数、正文等)。@hapi/joi提供它自己的模式验证。它还mongoose提供了它自己的模式验证,但在另一个级别上。如果hapi/joi尝试验证 HTTP 请求,则mongoose架构验证可确保插入数据库的数据有效。

正如您所看到的,这两个库都提供了自己的模式验证(在不同级别)。它需要额外的资源来保持两个模式彼此相同(这是一个容易出现错误的地方)。

问题是:我是否需要保留这两个库并支持两种模式?或者我可以使用mongoose它们的验证并且@hapi/joi是冗余?

提前致谢!

更新:

我找到了相关问题,但它无论如何都没有回答我的问题:(

Sul*_*Sah 6

您不必使用像 Joi 这样的模式验证包。

但两者都使用会很好。他们互相称赞。

Joi 用于 API,以确保客户端发送的数据有效。猫鼬模式用于确保我们的数据处于正确的形状。

使用 Joi 进行 API 验证有意义的场景:

我们通常对用户密码进行哈希处理,因此在我们的用户模式中,maxlength密码的选项可以比实际密码长度大得多。因此,使用 Joi,我们可以验证密码字段,使其不能超过登录路径中的 10 个字符。

猫鼬模式验证有意义的场景:

假设客户端发送了有效数据,我们可能在创建文档时忘记设置属性。如果我们在猫鼬模式中没有required: true该字段的选项,则创建的文档将不包含该字段。

在访问数据库之前尽快验证客户端数据也有利于安全性和性能。

使用两者的唯一缺点是一些验证重复。但他们似乎创建了一个名为joigoose的包来从 Joi 模式创建猫鼬模式。