intermediate

Models

Представляйте collection operations через compiled models и понимайте разницу между queries, documents и lean results.

Модель Mongoose — скомпилированная схема, привязанная к коллекции. Создаёт документы, выполняет запросы, применяет middleware и возвращает hydrated-документы, если не использован `.lean()`.

| Тип результата | Поведение | |----------------|-----------| | Hydrated document | Методы, отслеживание изменений, middleware | | Lean plain object | Быстрее чтение, без методов Mongoose |

					const Order = model('Order', orderSchema);
const doc = await Order.findById(id);      // hydrated
const row = await Order.findById(id).lean(); // plain object
				

На интервью: компиляция на соединение, момент выполнения запроса, цена hydration, document vs static methods.

Типовые ошибки: hydrated-документы в read-heavy API; перекомпиляция моделей при hot reload без guard; ожидание выполнения запроса при создании query object.

Компромисс — удобство и middleware против памяти и стоимости сериализации.

Чеклист:

  • Знайте, когда запрос реально выполняется.
  • Используйте lean для read-heavy plain objects.
  • Управляйте регистрацией модели на соединение.
  • Разделяйте persistence-документы и DTO API.