我实际上是在简单架构的Github上发布了这个没有响应的问题。我的代码可能是错误的,或者我对JS OOP的理解可能是错误的,因为我来自Java和PHP背景。所以我不确定这是不是一个错误,但似乎是:
check({}, Schema.User)
会触发异常,因为空对象缺少必填字段,但check(new User(), Schema.User)
有效
isn&t; new User()
是否也没有必填字段的值?
这里也是我做过的快速实验:
it("does not validate correctly if i give it an instance", function() {
var Bee, b, schema;
schema = new SimpleSchema({
name: {
type: String,
optional: false
}
});
Bee = function() {};
b = new Bee();
schema.newContext().validate(b, {modifier: false}).should.be.false // validate is true here
});
it("works if i give it {}", function() {
var schema;
schema = new SimpleSchema({
name: {
type: String,
optional: false
}
});
schema.newContext().validate({}, {modifier: false}).should.be.false // validate is false here
});
答案 0 :(得分:1)
我认为这是故意的,并且似乎只验证基本对象(因此它验证{}
,但不验证new Bee()
)因为else if (Utility.isBasicObject(val) ...
在简单模式验证中的某处。 js代码。