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

时间:2018-07-30 14:27:01

标签: node.js mongodb mongoose schema joi

我想防止将用户输入插入到MongoDB中。 我想正确验证用户输入。

Joi提供了基于模式的验证,以便测试用户输入。 听起来确实不错。

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

使用Joi模式并使用mongojs插件代替猫鼬怎么样?

1 个答案:

答案 0 :(得分:1)

猫鼬和Joi模式之间的区别

猫鼬的模式:在这里,您可以定义模型以及将接受的模型

例如

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会很好。