即使obj
包含不在架构中的元素,下面的语句也会返回成功。
问题
当它看到架构中没有指定的元素时,是否可能导致验证失败?
耶稣有这个expect(obj1).toEqual(obj2)
。
如果Validate不能做到这一点,那么我必须有什么选项来检测不需要的元素?
const Schema = require("validate");
const obj = {good: "1", bad: "2"};
const user = new Schema({
good: {
type: String,
required: true,
}
});
const r = user.validate(obj);
console.log(r);
是的,Schema
上有一个strict
选项,来自文档:
架构
模式定义了对象应该验证的结构。
参数
obj
模式定义opts
选项
opts.typecast
opts.strip
opts.strict
当对象包含架构中未定义的属性时,验证失败(可选,默认为false(
所以你需要这样的东西:
const options = { strict: true };
const user = new Schema({
good: {
type: String,
required: true,
}
}, options);