【发布时间】:2016-07-26 04:28:06
【问题描述】:
Mongo 3.2 有文档验证,我们可以用它来定义模式而不是使用 mongoose 来做吗?例如:
猫鼬
userschema = mongoose.Schema({
org: String,
username: String,
fullname: String,
password: String,
email: String
});
MongoDB
db.createCollection(
"example",{
validator:{
$and:[
{ "org":{$type:"string"}},
{ "username":{$type:"string"}},
{ "fullname":{$type:"double"}},
{"password":$type:"string"}},
{"email":{$type:"string"}}
]
},
validationLevel:"strict",
validationAction:"error"
})
这两个有什么区别,我们可以像在模式中那样使用验证器提供一个可选字段吗?
【问题讨论】:
-
它有点过于宽泛,但简而言之,区别在于: 1. MongoDB 验证远没有“客户端”模式定义中可用的功能那么“完整”。 2. MongoDB 模式验证发生在“服务器”而不是“客户端”,因此即使是“原子”操作的修改也可以“在某种程度上”得到验证。 “功能”还处于起步阶段,并且高度依赖“查询表达式”,而“客户端”框架具有完整的语言支持。但当然,所有操作都需要在“客户端”中进行验证。
-
另外,正如您问题的开场白中所述。这需要 MongoDB 3.2.x 或更高版本。由于那是目前的“最新版本”并且是一个相对较新的版本,所以这并不适合每个人。错误消息也需要“大量工作”,而且远没有像猫鼬这样的客户端框架所能提供的那样具有描述性。
标签: node.js mongodb validation mongoose schema