Подтвердить что ты не робот

Mongoose - та же схема для разных коллекций в (MongoDB)

Я создаю приложение (Express + MongoDB + Mongoose), где документы естественно группируются группами. Каждому запросу в базу данных будет необходимо только доступ к документам из одной группы. Поэтому я считаю хорошей идеей разделить каждую группу на свою коллекцию ради производительности.

Теперь я собираюсь использовать одну и ту же схему для каждой из этих коллекций, потому что они будут хранить один и тот же тип документов. Раньше у меня был единственный объект Model, потому что у меня было все в одной коллекции, но теперь мне нужно несколько моделей, по одному на группу.

Можно ли создать новый объект модели по каждому запросу (используя общую схему) или это слишком дорого? Что было бы хорошим архитектурным решением в этом случае?

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

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

Спасибо!

4b9b3361

Ответ 1

Модели уже кэшированы Mongoose, и вы можете использовать один и тот же объект схемы для нескольких моделей/коллекций. Поэтому просто создайте свой набор моделей один раз (при запуске) с помощью кода типа:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var schema = new Schema({...});
var model1 = mongoose.model('model1', schema);
var model2 = mongoose.model('model2', schema);

Если вы не хотите проходить вокруг экземпляров модели model1, model2, вы можете искать их по мере необходимости, вызывая mongoose.model('model1'); в ваших обработчиках.