Отображение «один ко многим» в мангусте, как получать и обрабатывать?

У меня проблема с сопоставлением «один ко многим» с мангустом (Mongodb). Один - это заказ (данные покупателя), а многие - товары (цена, количество и т. д.).

1) Как мне создать схему для заказа и элементов, например, я должен помещать элементы в массив в порядке?

2) Будут ли все данные в одной почтовой функции?

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


person Mike    schedule 18.07.2013    source источник


Ответы (1)


Поскольку кажется, что в заказе будет относительно небольшое количество предметов, самым простым, вероятно, будет просто список идентификаторов предметов:

var OrderSchema = new mongoose.Schema({
    items: [{type: mongoose.Schema.Types.ObjectId, ref: 'Item'}]
});

var ItemSchema = new mongoose.Schema({
    price: Number,
    quantity: Number
});

Большинство пользовательских интерфейсов не будут создавать весь заказ в одной функции POST, поэтому, вероятно, лучше разрешить создание заказа, а затем отдельно добавлять в него элементы через order.items.push(itemId).

person Peter Lyons    schedule 18.07.2013
comment
Итак, я бы сделал что-то вроде app.post('/uri', api.function) как для заказа, так и для элемента, а затем в API (контроллере) есть обратный вызов в функции, которая создает элементы для подталкивания элементов к заказу? - person Mike; 18.07.2013
comment
Ну да, хотя создание элемента звучит так, как будто он принадлежит отдельному приложению управления запасами, а не созданию заказа, который является деятельностью электронной торговли. Извините, я не могу направить вас в целом через дизайн приложения. Этот сайт предназначен для конкретных вопросов по программированию. - person Peter Lyons; 18.07.2013
comment
Требуется ли для этого, чтобы ItemSchema находилась в том же файле, что и OrderSchema? Мне интересно, будет ли разрешено поле ref, даже если ItemSchema определена в другом файле. - person Gustavo Guevara; 15.07.2015
comment
Нет, схемы можно определить в любом файле, это не имеет значения. Одинаковые или разные будут работать. Тем не менее, хорошее эмпирическое правило для последовательного и неудивительного состоит в том, чтобы иметь только одну схему для каждого файла. - person Peter Lyons; 15.07.2015
comment
Именно то, что я искал. Документы на сайте mongoDB объясняют, как это работает, но не предоставляют синтаксиса. По крайней мере, я не могу найти его. - person reaper_unique; 02.11.2015