将 Joi 模式与 Mongoose 模式一起使用?

Using Joi schemas alongside Mongoose schemas?

我想防止用户输入被插入 MongoDB。 我想正确验证用户输入。

Joi 提供基于模式的验证来测试用户输入。 其实挺好听的

猫鼬本身也有模式,有什么区别?

如何使用 Joi 架构并使用 mongojs 插件而不是 Mongoose?

Mongoose 和 Joi 模式的区别

Mongoose 的模式: 这是您定义模型和它将接受的字段的地方

例如

const Schema = require('mongoose').Schema;
const UserSchema = new Schema ({
  username: String
  email: String
})
const User = mongoose.module("user", UserSchema))

这里你说的是用户模型将只接受用户名和电子邮件,两者都是字符串。


Joi 的架构: 此处定义验证规则以在创建数据文档之前验证接收到的数据。
例如

const receivedData = {username: "John Doe", email: "doe.john@gmail.com"}
const Joi = require('joi');
const schema = Joi.object().keys({
    username: Joi.string().alphanum().min(3).max(30).required(),
    email: Joi.string().email()
})
const result = Joi.validate(receivedData, schema)

这就是您使用 Joi 模式定义规则的方式

  • username 字段必须是字符串、字母数字且长度在 3 到 30 之间
  • email 字段必须是字符串和电子邮件

结果将以对象的形式存储在result常量中。


而且我以前没有使用过 mongojs,但 Joi 不依赖 Mongoose。所以我想使用 monojs.

会很好