我需要将 @hapi/joi 与猫鼬一起使用吗?
Do I need to use @hapi/joi with mongoose?
我需要使用 @hapi/joi
with mongoose
吗?
据我了解,@hapi/joi
用于验证 HTTP 请求(headers、参数、body 等)。 @hapi/joi
提供自己的模式验证。 mongoose
还提供了它自己的模式验证,但在另一个层面上。如果 hapi/joi
尝试验证 HTTP 请求,那么 mongoose
模式验证可确保数据有效以插入数据库。
如您所见,这两个库都提供了自己的模式验证(在不同级别)。它需要额外的资源来保持两个模式彼此相等(这是错误的地方)。
问题是:我是否需要保留这两个库并支持两个模式?或者我可以使用 mongoose
和他们的验证并且 @hapi/joi
是冗余的?
提前致谢!
更新:
我找到了 related question,但它并没有回答我的问题:(
您不必使用像 Joi 这样的模式验证包。
不过两者都用就好了。他们互相称赞。
Joi 用于APIs 以确保客户端发送的数据有效。
猫鼬模式用于确保我们的数据处于正确的状态。
使用 Joi API 验证有意义的场景:
我们通常对用户密码进行哈希处理,因此在我们的用户模式中,密码的 maxlength
选项可以比实际密码长度大得多。因此,对于 Joi,我们可以验证密码字段,使其在登录路径中不能超过 10 个字符。
猫鼬模式验证有意义的场景:
假设客户端发送了一个有效数据,有可能我们在创建文档时忘记设置了属性。如果我们在该字段的 mongoose 模式中没有 required: true
选项,则创建的文档将没有该字段。
在访问数据库之前尽快验证客户端数据对安全性和性能也有好处。
同时使用两者的唯一缺点是一些验证重复。但他们似乎创建了一个名为 joigoose 的包来从 Joi 模式创建猫鼬模式。
我需要使用 @hapi/joi
with mongoose
吗?
据我了解,@hapi/joi
用于验证 HTTP 请求(headers、参数、body 等)。 @hapi/joi
提供自己的模式验证。 mongoose
还提供了它自己的模式验证,但在另一个层面上。如果 hapi/joi
尝试验证 HTTP 请求,那么 mongoose
模式验证可确保数据有效以插入数据库。
如您所见,这两个库都提供了自己的模式验证(在不同级别)。它需要额外的资源来保持两个模式彼此相等(这是错误的地方)。
问题是:我是否需要保留这两个库并支持两个模式?或者我可以使用 mongoose
和他们的验证并且 @hapi/joi
是冗余的?
提前致谢!
更新:
我找到了 related question,但它并没有回答我的问题:(
您不必使用像 Joi 这样的模式验证包。
不过两者都用就好了。他们互相称赞。
Joi 用于APIs 以确保客户端发送的数据有效。 猫鼬模式用于确保我们的数据处于正确的状态。
使用 Joi API 验证有意义的场景:
我们通常对用户密码进行哈希处理,因此在我们的用户模式中,密码的 maxlength
选项可以比实际密码长度大得多。因此,对于 Joi,我们可以验证密码字段,使其在登录路径中不能超过 10 个字符。
猫鼬模式验证有意义的场景:
假设客户端发送了一个有效数据,有可能我们在创建文档时忘记设置了属性。如果我们在该字段的 mongoose 模式中没有 required: true
选项,则创建的文档将没有该字段。
在访问数据库之前尽快验证客户端数据对安全性和性能也有好处。
同时使用两者的唯一缺点是一些验证重复。但他们似乎创建了一个名为 joigoose 的包来从 Joi 模式创建猫鼬模式。