2016-10-18 1 views
0

Я пытаюсь проверить объект с помощью SimpleSchema в Meteor, прежде чем вставлять его в базу данных.Проверка пользовательского объекта в Meteor Simpleschema

Объект выглядит так, как я распечатать его из метода Метеор, который вызывает вставку:

channels: { '1': [ 'rect4557-6-4-5-7-4-2', 'rect4557-6-4-97-0-7-6-3' ] } }

Если вставить его в базу данных, не подключая схемы к нему, он отлично работает. Однако, когда я его запускаю через SimpleSchema, значение поля, выводимое из console.log в методе проверки , представляет собой пустой объект {}. Даже если я не запускаю проверку, пустой объект хранится, если используется SimpleSchema.

Код для получения выходного значения simpleschema:

Arch.schema = new SimpleSchema({ 
    channels: { 
    type: Object, 
    custom: function validateChannels() { 
     console.log("this.value:", this.value) 
    } 
}); 
Architectures.attachSchema(Architectures.schema); 

В самом деле, что я должен делать? Это ошибка в SimpleSchema?

+0

Пожалуйста, покажите свой код простой схемы. –

+0

спасибо @MichelFloyd, добавлен код – xxor

ответ

1

Похоже, вам просто нужно добавить опцию blackbox: true. SimpleSchema не поддерживает произвольные ключи объектов, если вы не отметили его как объект Blackbox. См. https://github.com/aldeed/meteor-simple-schema#blackbox

Фильтрация, являющаяся частью автоматической очистки, - это то, что вырезает для вас. Если вы хотите предотвратить это в конкретном вызове insert, просто перейдите filter: false. См. https://github.com/aldeed/meteor-collection2#skip-removing-properties-that-are-not-in-the-schema

Смежные вопросы