2016-06-29 3 views
1

Мне интересно, есть ли простой способ сделать это. Во-первых, это моя текущая схема:Meteor SimpleSchema Повторные вложенные объекты

Test.schema = new SimpleSchema({ 
    owner: { 
    type: String, 
    label: 'Owner of the test', 
    }, 
    name: { 
    type: String, 
    label: 'Name of the test', 
    }, 
    createdAt: { 
    type: Date, 
    label: 'Date of test creation', 
    }, 

    // MY QUESTION IS FOR THE OBJECT BELOW 

    [LOVE]: { 
    type: Object, 
    label: `Configuration for ${LOVE}`, 
    }, 
    [LOVE.one]: { type: Boolean }, 
    [LOVE.two]: { type: Boolean }, 
    [LOVE.three]: { type: Boolean }, 
    [LOVE.four]: { type: Boolean }, 
    [LOVE.five]: { type: Boolean }, 
    [LOVE.six]: { type: Boolean }, 
    [LOVE.seven]: { type: Boolean }, 
    [LOVE.eight]: { type: Boolean }, 
    [LOVE.nine]: { type: Boolean }, 
}); 

Где я имею переменную ЛЮБОВЬ, я хотел бы, чтобы это было равно несколько значений, так что я не должен писать ту же схему снова и снова.

Я думал, что могу использовать что-то вроде регулярного выражения, но я не знаю. Может кто-нибудь помочь?

+0

Что вы хотите использовать для регулярного выражения (один, два, три ... a.s.o)? Возможно, у меня что-то не так, но почему бы не использовать коллекцию для Любовных объектов? Или, может быть, есть препроцессор, который может вставляться в соответствии с шаблоном, поэтому вам не нужно писать его снова и снова ... если так ... – Lemonade

+0

Переменная LOVE должна быть равна многим значениям, поэтому я могу просто написать эту часть один раз. Ключи один, два, три и т. Д. Всегда одинаковы для разных значений LOVE. Мое плохое, я надеюсь, что это было более ясно. – cocacrave

ответ

2

Просто используйте вложенную схему:

lovers = new SimpleSchema({ 
    one: {type: boolean}, 
    two: {type: boolean}, 
    three: {type: boolean}, 
    four: {type: boolean}, 
    five: {type: boolean}, 
    six: {type: boolean}, 
    seven: {type: boolean}, 
    eight: {type: boolean}, 
    nine: {type: boolean}, 
}); 

, а затем использовать его в исходной схеме:

Test.schema = new SimpleSchema({ 
    owner: { 
    type: String, 
    label: 'Owner of the test', 
    }, 
    name: { 
    type: String, 
    label: 'Name of the test', 
    }, 
    createdAt: { 
    type: Date, 
    label: 'Date of test creation', 
    }, 
    LOVE: { type: lovers }, 
    PASSION: { type: lovers }, 
    DESIRE: { type: lovers }, 
    etc... 
}); 

Надеюсь, это то, что вы были после.

+0

Спасибо, Мишель. Это сработало отлично! – cocacrave

+1

Спасибо за этот пример, я рад, что пришел сюда. [Вот ссылка на документацию] (https://github.com/aldeed/meteor-simple-schema) для тех, кто придет в будущем. –

0

Это должно быть IMHO

relations : { type : [boolean] } 

Итак вы бы

LOVE.relations 

как коллекция сказать 8 записей. Не нужно ограничивать его этими 8.

Возможно, вы использовали бы другой термин, возможно, дел или лучше, но идея заключается в том, чтобы использовать его так, как предполагается, что коллекция предназначена для этой цели.

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