Пользовательское сообщение для подтверждения в метеорной форме на родственных полях

Как отправить пользовательское сообщение проверки в другое поле схемы?

SessionSchema = new SimpleSchema({
  'seat.from': {
    type: String,
    max: 10,
    optional: false
  },
  'seat.to': {
    type: String,
    max: 10,
    optional: false
  }
});

ReservationSchema = new SimpleSchema({
  title: {
    type: String
  },
  sessions: {
    type: [SessionSchema],
    min: 1,
    optional: false,
    custom: function() {
     //Its an array object. validation is depends on next array so I made a validation here instead of `SessionSchema`. 
     return "greater-session"; // dispaly error on top of the session. I need to display error message on perticular field in `SessionSchema`. 
    }
  }
});

SimpleSchema.messages({
    "greater-session": "From seat should not lesser then previous session"
});

Автоформа:

{{#autoForm id="addReservation" type="method" meteormethod="insertMyReservation" collection="Reservation"}}
 {{> afQuickField name="title" autofocus=''}}
 {{> afQuickField name="sessions" panelClass="group"}}
{{/autoForm}}

Как мне этого добиться?

2 ответа

Я бы попробовал что-то вроде этого:

ReservationSchema = new SimpleSchema({
  title: {
    type: String
  },
  sessions: {
    type: [SessionSchema],
    min: 1,
    optional: false,
    custom: function() {
     var sessions = this.value; // array;
     var seatTo = 0; // initalize @ 0
     var hasError;

         // loop through seach session 
         _.each(sessions, function(s, index) {

          // if seatFrom < previous seatTo
             if (s['seat.from'] < seatTo) {
                 hasError = true;
             };
             seatTo = s['seat.to']; // update seatTo for next iteration
         }); 

         if (hasError) {
             return "greater-session"; // dispaly error on top of the session. I need to display error message on perticular field in `SessionSchema`. 
         }
    }
  }
});

Я бы предложил вам использовать собственный валидатор для вашей SimpleSchema. У них есть доступ к дополнительной контекстной информации.

Другие вопросы по тегам