Задание
Один из моих клиентов должен создать сайт своей компании + встроенную электронную коммерцию, чтобы продавать свои продукты, перечисленные на странице продукта, вместе с панелью администратора с последующим стеком Angular 6, REST Api с Nodejs с использованием Express и mongoDd.
Шаблон сайта: посмотрите структуру шаблона
Веб-сайт должен быть сделан таким образом, чтобы клиент мог изменять данные, отображаемые на веб-сайте, такие как изображения слайдера, каждый заголовок и каждый текст описания, фоновые изображения в баннере с панели инструментов.
Также есть список товаров, корзина и онлайн-платежи как на сайте, так и на панели инструментов
Мой подход:
Создан угловой проект 6 с 3 модулями
Модуль просмотра, в котором есть компоненты, для которых обрабатываются такие страницы, как дома, о нас, решениях, поддержке, контактах, продуктах, карьере и т. Д.
Модуль панели инструментов: все компоненты, связанные с входом администратора и редактированием контента
Общий модуль: общие компоненты
Моя проблема с REST Api
Я запутался в том, как смоделировать схему mongoose для такого огромного приложения. Должен ли я моделировать данные каждой страницы, чтобы иметь единую схему со встроенным документом, или я должен использовать ссылочные отношения?
например, одна из моих схем на странице поддержки выглядит следующим образом
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const regulatoryPartnerSchema = new Schema({
name: {
type: String,
required: true,
},
image: {
type : String,
required : true
}
});
const supportLocationSchema = new Schema({
title: {
type: String,
required: true,
},
email: {
type : String,
required : true
}
});
//create a schema
const supportSchema = new Schema({
contact: {
title: {
type: String,
required: true,
uppercase : true
},
description: {
type : String,
required : true
},
location: [ supportLocationSchema ]
},
certification_support: {
title: {
type: String,
required: true,
uppercase : true
},
description: {
type: String,
required: true,
}
},
regulatory_partners: {
title: {
type: String,
required: true,
uppercase : true
},
description: {
type: String,
required: true,
},
partners: [regulatoryPartnerSchema]
},
solution_consulting: {
title: {
type: String,
required: true,
uppercase : true
},
description: {
type: String,
required: true,
},
solution_list: {
type : [String],
required : true
}
},
});
//create model
const SupportPage = mongoose.model('supportPage', supportSchema);
// export the model
module.exports = SupportPage;
Как видите, я создал схему для страницы поддержки со всеми данными на странице в одну схему со встроенными документами
Должен ли я использовать этот подход или использовать гибридный подход, особенно при создании схемы для главных страниц просмотра, таких как Дом, о нас, поддержке, контактах, решениях, карьере и т. Д.?
Поскольку мне необходимо обновить эти данные с панели инструментов, я боюсь, что при использовании встроенного подхода возникнут проблемы при обновлении документа
Пожалуйста, помогите мне с вашими предложениями
Примечание: путаница при создании схемы характерна только для просмотра страниц, таких как Дом, о, контакты, решения, карьера и т. Д.