2015-06-30 2 views
0

У меня есть несколько групп и некоторые предметы в Метеор.Группы и подгруппы в Метеор

Каждый элемент принадлежит к группе. Группы фактически могут быть разделены на две части, где некоторые из групп принадлежат к группе с более высоким порядком (в иерархии).

Так иерархия может выглядеть следующим образом:

Group 1 
    Subgroup 1 
    Subgroup 2 
    Subgroup 3 
Group 2 
    Subgroup 1 
    Subgroup 2 
Group 3 
    Supgroup 1 

Элементы могут принадлежать только к подгруппе и никогда «основной группы». Поэтому я подумал, что могу создать коллекцию, которая состоит только из подгрупп, а затем поле, в котором указывается, к какой «основной группе» принадлежит эта подгруппа. Но мне также нужно хранить дополнительную информацию о «основных группах» (таких как ее название, диапазон дат и т. Д.), Поэтому, возможно, лучшим решением является либо создание двух коллекций; MainGroup и SubGroup, а также поле SubGroupId в Item. Но поскольку два типа групп почти равны, я думаю, что могу создать структуру схемы, где подгруппы являются дочерними объектами «основной группы».

Как вы обычно создаете структуру данных такого приложения? В идеале также можно было бы иметь вложенные группы когда-нибудь.

ответ

-2

Что вам нужно, это пакет схемы как https://github.com/aldeed/meteor-simple-schema

Простые схемы

AddressSchema = new SimpleSchema({ 
    street: { 
    type: String, 
    max: 100 
    }, 
    city: { 
    type: String, 
    max: 50 
    }, 
    state: { 
    type: String, 
    regEx: /^A[LKSZRAEP]|C[AOT]$/ 
    }, 
    zip: { 
    type: String, 
    regEx: /^[0-9]{5}$/ 
    } 
}); 

Составные схемы

CustomerSchema = new SimpleSchema({ 
    billingAddress: { 
    type: AddressSchema 
    }, 
    shippingAddresses: { 
    type: [AddressSchema], 
    minCount: 1 
    } 
}); 

Для проверки объекта,

obj = {title: "Ulysses", author: "James Joyce"}; 
isValid = BookSchema.namedContext("myContext").validate(obj); 
+0

Это не отвечает на вопрос. – tarmes

+0

Вот вы, примеры кода –

+0

Это объясняет, как обеспечить соблюдение схемы. Пользователь спрашивает, какую схему следует применять, чтобы наилучшим образом адресовать данные, которые он пытается представить. – tarmes

0

Поскольку вы собираетесь иметь вложенную группу в один прекрасный день, не имеет смысла иметь две коллекции (по одному для каждого уровня), так как вам нужна другая коллекция для каждой вашей дальнейшей любви.

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

Альтернативой может быть один набор групп, где каждая группа может иметь родительский идентификатор в качестве поля. Если нет родительского идентификатора, вы знаете, что это группа верхнего уровня. Этот подход полезен, если вам нужно отправить только подгруппы до клиента (так как Meteor не может вернуть курсор для подсекции, вам всегда нужно будет отправить поддоку задержек).

Лучшая структура зависит от вашего приложения и того, как вы будете использовать данные для создания своего пользовательского интерфейса.

Наконец, в качестве примечания другого плаката вы можете использовать пакет Simple Schema, чтобы обеспечить соблюдение схемы после того, как вы ее определили.

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