将 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
.
会很好
我想防止用户输入被插入 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
.