Должен ли я создавать файл новой модели схемы для каждого маршрута ИЛИ использовать уже созданную схему? - PullRequest
0 голосов
/ 03 сентября 2018

Предположим, у меня есть пользовательская схема, которая имеет около 30 полей, а также 3 другие схемы.

UserSchema.js

user_schema = new Schema({
    user_id: { type: String},
    .........//30 properties
});
ctrs_schema = new Schema({
    .........10 properties
});
ids_schema = new Schema({
    .........5 properties
});
comments_schema = new Schema({
    .........10 properties
});

Сейчас я пишу маршрут, который изменит пол пользователя. Теперь, чтобы сделать это, я могу использовать UserSchema.js , но это загрузит все схемы в мой маршрут, тогда как если Я бы создал новый файл, в котором была только одна схема с двумя полями, тогда все схемы не будут загружены в память для маршрута.

UserGenderSchema.js

gender_schema = new Schema({
    user_id: { type: String},
    gender: { type: String}
});

Я знаю, что есть плюсы и минусы обоих способов

Плюсы -

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

Минусы -

Все схемы загружаются для всех ненужных маршрутов. объем памяти Потери.

Будет ли меньше использование памяти между двумя способами в потоках?

Может кто-нибудь, скажите, пожалуйста, какая архитектура будет лучше или что вы реализуете в своем проекте и почему?

Спасибо

1 Ответ

0 голосов
/ 04 сентября 2018

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

...