假设我有一个 javascript 对象(data
),我想检查它是否符合Schema
我定义的给定。
有没有办法做到这一点,而无需将模式转换为模型,创建一个填充了data
, 并运行的模型实例mymodel.validate()
?
我很想有一个Schema(definition).validate(data, callback)
,但validate
函数是在Document
类上定义的,据我所知。
Mongoose在 2019 年(v5.8.0)将该功能添加为Model.validate(... ) :
你可以:
try {
await Model.validate({ name: 'Hafez', age: 26 });
} catch (err) {
err instanceof mongoose.Error.ValidationError; // true
}
一种方法是在自定义验证器的帮助下执行此操作。当验证被拒绝时,它无法将文档保存到数据库中。
或者通过 MongoDB 提供的具有与您定义的相同架构的 validate() 函数来实现此目的的另一种方法。
您可以在 Mongo 侧链接
上验证您的架构
例如:
db.createCollection("students", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name" ],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
},
year: {
bsonType: "int",
minimum: 2017,
maximum: 3017,
description: "must be an integer in [ 2017, 3017 ] and is required"
}
}
}
}
})