Задать вопрос
IwanQ
@IwanQ
Плохие времена часто дают прекрасные возможности

Есть ли способ оптимизировать данный подход?

Доброго времени суток.

У меня есть коллекция user, и связанные с ней коллекции, такие как emailConfirmation, которая ссылается на user'a.

Имею ввиду emailConfirmationModel:
userId: {
    type: Schema.Types.ObjectId,
    ref: 'User',
  },


При получении данных о пользователе мне нужно каким-то образом получать информацию и о пользователе, и о emailConfirmation коллекции.

На данный момент это 2 разных запроса к базе данных.

const user = await User.findOne...
const userConfirmationInfo = await emailConfirmation.findOne...


Далее я связываю их вместе
const data = { ...user,  ...userConfirmationInfo };


Но я практически точно уверен, что это костыльный подход.

Подскажите пожалуйста, как оптимизировать решение данной задачи?
  • Вопрос задан
  • 89 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Javascript.ru
    Курс по Node.js
    5 недель
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Решения вопроса 2
wapster92
@wapster92
https://mongoosejs.com/docs/populate.html
Под капотом работает как ваш код, то есть отправляет несколько запросов к базе данных
Ответ написан
@xirurgx3d
const userConfirmationInfo = await emailConfirmation.findOne({}).populate('User')

если вам нужен просто обьект то можете использовать ещё .lean()
для оптимизации
const userConfirmationInfo = await emailConfirmation.findOne({}).populate('User').lean()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы