所以直到这一点,我对Collection2 / Simple Schema的体验至多是基本的。现在,我正在尝试验证'类型'基于Type集合中的文档。
@Data = new Mongo.Collection 'data'
Data.attachSchema new SimpleSchema
'types':
'type': [String]
'label': 'Types'
'custom': ->
if @isSet
Meteor.call 'isType', @value, (error, result) ->
if !result
Data.simpleSchema().namedContext('admin_update').addInvalidKeys [
'name': 'types'
'type': 'notAllowed'
]
'otherField':
'type': Number
'label': 'Other Field'
'optional': true
到目前为止,我的isType方法已经正确验证了值,但无论它是返回true还是false,它都会存储该值(即使表单会短暂闪烁错误消息)。我不认为我掌握了自定义验证,以便弄清楚如何正确地做到这一点,所以任何和所有的帮助都会受到赞赏,即使它只是在推动我朝着正确的方向发展。
答案 0 :(得分:0)
您可以使用allowedValues
字段,该字段可以使用数组或函数。使用功能。
MyCollection.attachSchema(new SimpleSchema({
types: {
type: [String],
allowedValues: function () {
// assuming "Types" is the collection.
return Types.find().map(function (doc) {
return doc._id;
});
}
}
}));
这在后端验证,因此出版物和订阅不会成为问题。