0

したがって、これまでの 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 を返すかに関係なく、とにかく値を格納します (フォームがエラー メッセージを短時間点滅させても)。これを正しく行う方法を理解するのに十分なほどカスタム検証を把握しているとは思わないので、たとえそれが正しい方向に私を押し上げているとしても、あらゆる助けをいただければ幸いです。

4

1 に答える 1

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

これはバックエンドで検証されるため、パブリケーションとサブスクリプションは問題になりません。

于 2015-07-07T11:16:36.970 に答える