使用简单架构在自定义验证中调用方法后返回无效键

时间:2015-06-28 10:38:36

标签: meteor meteor-autoform meteor-collection2

所以直到这一点,我对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,它都会存储该值(即使表单会短暂闪烁错误消息)。我不认为我掌握了自定义验证,以便弄清楚如何正确地做到这一点,所以任何和所有的帮助都会受到赞赏,即使它只是在推动我朝着正确的方向发展。

1 个答案:

答案 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;
      });
    }
  }
}));

这在后端验证,因此出版物和订阅不会成为问题。