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 };


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

Подскажите пожалуйста, как оптимизировать решение данной задачи?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 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()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы