Meteor SimpleSchema говорит, что случайные вещи допустимы

Я использую пакеты aldeed:collection2 и aldeed:simple-schema. Я хочу проверить документ по схеме. Моя схема содержит, например. строковое поле с массивом allowValues ​​и массивом вложенных объектов, описываемых подсхемой. Как это:

...

type: {
    type: String,
    allowedValues: [ 'A', 'B', 'C' ],
    defaultValue: 'A',
    index: 1,
  },
nestedStuff: {
    type: [ new SimpleSchema(nestedStuffSchema.schema(Meteor, SimpleSchema)) ],
    defaultValue: [],
  },

...

У меня есть «плохой» документ, который, например. "D" в поле type и недопустимые вложенные элементы массива.

На клиенте я пытаюсь:

Contacts.simpleSchema().namedContext().validate(badDoc);

и он возвращает true. SimpleSchema говорит, что документ действителен, хотя его поля не соответствуют схеме. Проверка «плохого» поля type по отдельности также возвращает true. Что я делаю не так? Почему SimpleSchema может считать случайные вещи действительными?


person Tristan Tzara    schedule 27.07.2016    source источник


Ответы (1)


если вы хотите проверить массив строк, вам нужно сохранить String внутри []. См. приведенный ниже код, это может помочь

type: {
     type: [String],
     allowedValues: [ 'A', 'B', 'C' ],
     defaultValue: ['A'],
     index: 1,
   },
nestedStuff: {
     type: [ new SimpleSchema(nestedStuffSchema.schema(Meteor,SimpleSchema)) ],
defaultValue: [],
  },

Спасибо

person khem poudel    schedule 27.07.2016
comment
не могли бы вы дать ссылку? - person RNA; 15.03.2017