我正在开始一个新的Meteor项目并使用Collection2进行验证。我定义了以下架构。当我插入标题为4的文档时,我希望它失败,因为我已将其指定为String。它并没有失败。我怀疑Meteor有一些基本方面我没有得到。仅供参考,如果我遗漏标题,我会得到预期的错误。
我的架构:
Timestamps = new Mongo.Collection('timestamps');
var Schemas = {};
Schemas.Timestamp = new SimpleSchema({
title: {
type: String,
label: "Title",
max: 500,
optional: false
},
notes: {
type: String,
label: "Notes",
max: 1000,
optional: true
}
});
Timestamps.attachSchema(Schemas.Timestamp);
以下代码应该失败并显示错误,标题必须是String。但是,它没有失败,并且值被存储为字符串“4”。
创建时间戳:
Timestamps.insert({title: 4, comments: "a comment"});
这是我发布和允许时间戳插入的方式。
Meteor.publish("timestamps", function() {
return Timestamps.find();
});
Timestamps.allow({
insert: function(timestamp) {
return true;
}
});
答案 0 :(得分:0)
查看文档:
https://github.com/aldeed/meteor-collection2#skip-conversion-of-values-to-match-what-schema-expects
Collection2有一个选项(默认为true)来尝试匹配数据类型