【发布时间】:2019-01-06 20:08:28
【问题描述】:
我想阻止将用户输入插入 MongoDB。 我想正确验证用户输入。
Joi 提供基于模式的验证来测试用户输入。 实际上听起来不错。
Mongoose 本身也有模式,有什么区别?
使用 Joi 架构并使用 mongojs 插件而不是 Mongoose 怎么样?
【问题讨论】:
标签: node.js mongodb mongoose schema joi
我想阻止将用户输入插入 MongoDB。 我想正确验证用户输入。
Joi 提供基于模式的验证来测试用户输入。 实际上听起来不错。
Mongoose 本身也有模式,有什么区别?
使用 Joi 架构并使用 mongojs 插件而不是 Mongoose 怎么样?
【问题讨论】:
标签: node.js mongodb mongoose schema joi
Mongoose 的架构:您可以在此处定义模型以及它将接受的字段
例如。
const Schema = require('mongoose').Schema;
const UserSchema = new Schema ({
username: String
email: String
})
const User = mongoose.module("user", UserSchema))
这里你说 User 模型将只接受用户名和电子邮件,并且两者都将是字符串。
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 会很好。
【讨论】: