2015-09-04 6 views
1

Я только начинаю с Meteor и autoform. Я создал схему, которую вызывает quickform. Проблема в том, что я не могу понять, как получить валидацию для работы с определенным индексом массива без оболочки группы массивов. Я могу получить подтверждение на него, если я использую этот тип схемы ниже, но затем для этого требуется объект, и я ищу строку. Если я изменил тип на String, то проверка не появится вообще. Любая помощь приветствуется.Meteor Collection2 валидация на электронных сообщениях отображается как объект, но не как строка

schema.js

Schema.NewUser = new SimpleSchema({ 
    "profile.organization" : { 
     type: String, 
     regEx: /^[a-z0-9A-z .]{3,30}$/, 
     optional: true, 
     label: "Company" 
    }, 
    emails: { 
     type: Object, 
     label: "Email", 
    }, 
    "emails.$":{ 
    type: Object, 
    }, 
    "emails.$.address": { 
    type: String, 
    label: "Email", 
    regEx: SimpleSchema.RegEx.Email, 
    }, 
    parent: { 
    type: String, 
    optional: true, 
    }, 
    roles: { 
    type: Array, 
    optional: true 
    }, 
    'roles.$': { 
     type: String, 
     allowedValues: [ 
     'owner', 
     'admin' 
     ], 
     optional: true, 
     label: "Choose a number", 
     autoform: { 
     options: [ 
      { 
       label: "owner", 
       value: "owner" 
      }, 
      { 
       label: "admin", 
       value: "admin" 
      } 
     ] 
     } 
    } 
}); 

HTML

{{> quickForm collection="Meteor.users" id="insertUserForm" type="method" meteormethod="insertUser" schema="Schema.NewUser" fields="profile.organization, emails.0.address, roles.0" }} 
+0

В каком поле вы ожидаете подтверждения? –

+0

Я бы хотел, чтобы email.0.address проверялся. Я хочу отображать его как одно поле без поля и плюс минус. Если я проверяю проверку электронной почты, но если я делаю email.0.address, она отображается только в консоли. Спасибо за помощь –

ответ

1

Я в конечном итоге выяснить это за счет перехода от quickField к AUTOFORM с afFieldInput. У этого есть возможность проверить, является ли поле действительным с afFieldIsInvalid. Я использовал это, чтобы проверить родительское поле электронной почты для проверки, но по-прежнему использовал адрес электронной почты для индекса в качестве моего ввода.

Кончилось выглядеть как этот

{{#autoForm collection="Meteor.users" id="insertUserForm" type="method" meteormethod="insertUser" schema="Schema.NewUser" }} 
{{> afQuickField name='profile.organization'}} 

<div class="form-group{{#if afFieldIsInvalid name='emails'}} has-error{{/if}}"> 
    <label>Email</label> 
    {{> afFieldInput name='emails.0.address'}} 

    {{#if afFieldIsInvalid name='emails'}} 
    <span class="help-block">{{afFieldMessage name='emails'}}</span> 
    {{/if}} 
</div> 

<label>Roles</label> 
{{> afFieldInput name="roles.0" options=roleOptions}} 

<button type="submit" class="btn btn-primary">Insert</button> 
{{/autoForm}} 

В моей схеме я сделал небольшие изменения в электронную почту. Тип электронной почты теперь [Object].

emails: { 
     type: [Object], 
     label: "Email", 
     optional: false 
    }, 
    "emails.$.address": { 
     type: String, 
     regEx: SimpleSchema.RegEx.Email, 
     label: 'Email' 
    }