【问题标题】:Do I need to use @hapi/joi with mongoose?我需要将@hapi/joi 与猫鼬一起使用吗?
【发布时间】:2020-07-03 04:15:07
【问题描述】:

我需要将@hapi/joimongoose 一起使用吗?

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

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

问题是:我需要保留这两个库并支持两个架构吗?或者我可以使用mongoose 和他们的验证和@hapi/joi 是冗余?

提前致谢!

更新:

我找到了related question,但它并没有回答我的问题:(

【问题讨论】:

    标签: node.js mongoose joi


    【解决方案1】:

    您不必使用像 Joi 这样的架构验证包。

    但最好同时使用它们。他们互相恭维。

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2013-10-22
      • 1970-01-01
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多