MongoDB База данных схемы для электронной коммерции - PullRequest
0 голосов
/ 15 мая 2018

Я сейчас создаю многопользовательское приложение для электронной коммерции (например, shopify, но для другого сектора).Я использую nodejs с mongoDB.Как лучше хранить заказы?

В настоящее время у меня есть такая схема:

UserModel{
username,
password,
ownsStore:}

StoreModel{storeID,
owner:,
products:[productarray],
categories:[],
orders:[array with all OrderModel{
orderid:
oderitems}]}

Будет ли массив заказов в магазине большим?Лучше ли практиковаться в размещении заказов в собственном собрании и назначении их магазинам с помощью команды find и сохранения только ObjectId в массиве заказов магазина?

1 Ответ

0 голосов
/ 15 мая 2018

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

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

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

Если вы создаете разные объекты, все эти вещи станут проще и быстрее. Я работал над проектом электронной коммерции и столкнулся с проблемами, поэтому позже я изменил их на разные объекты для каждого заказа.

Итак, определите другую схему для заказов и добавьте уникальный идентификатор пользователя в каждом заказе, чтобы сопоставление стало простым

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...