2016-02-22 5 views
1

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

Отзывы будут классифицированы по продуктам на веб-сайте: пользователь откроет страницу, отображающую список продуктов, рассмотренных на веб-сайте, и узнает название каждой продукции. При нажатии на продукт пользователь переходит на новую страницу, отображающую все отзывы о продукте.

Я был установлен на здании только одна модели сбора всех отзывов:

var ReviewSchema = new mongoose.Schema({ 
    productName: String, 
    productCreator: String, 
    review: String, 
    upvotes: {type: Number, default: 0}, 
    author: String 
}); 

страницы Список всех товары получат все отзывы от базы данных, а затем отображать только ProductName и productCreator после устранения всех дубликатов.

<a href="link/to/reviews/aboutProducts">{{productName}} - {{productCreator}}</a> 

Но это, вероятно, неэффективно. Было бы лучше построить две разные модели, одну для обзоров и одну для продуктов?

Я извиняюсь, если мой вопрос глупый, но я все еще учусь о MEAN и много о нереляционной дб не знаю, что это мой первый проект;)

+0

Поскольку mongo является нереляционной базой данных, я не на это 100%, но я думаю, что лучше иметь отдельную коллекцию для обзоров и просто связывать их с идентификатором productID. Кроме того, я предполагаю, что автор является пользователем, вы также хотите, чтобы это была отдельная коллекция и была связана с uniqID. – Baruch

+0

Спасибо за вашу помощь Я планирую сделать отдельную коллекцию для автора, сейчас я просто использую String, чтобы все было просто. Кто-нибудь еще со 100% -ным ответом? :) – Puck7

+1

My $ 0.02: Создайте отдельную модель для каждой * вещи * у вас есть. Здесь у вас есть «продукт» и «обзор» (и, вероятно, «автор» тоже). - Как вы можете видеть, этот вопрос в основном основан на мнениях и поэтому [не подходит для StackOverflow] (http://stackoverflow.com/help/on-topic). – Tomalak

ответ

0

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

+0

[(Over-) Вложение - это корень всех злых] (http://blog.mahlberg.io/blog/2015/11/05/data-modelling-for-mongodb/) –

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