У меня есть две коллекции:
С каждой загрузкой связан Пользователь
, и мне нужно чтобы узнать их подробности при просмотре Загрузки
. Лучше всего продублировать эти данные в записи «Загрузки» или использовать populate () , чтобы получить эти данные из коллекции «Пользователи», на которую ссылается _id
?
ВАРИАНТ 1
var UploadSchema = new Schema({
_id: { type: Schema.ObjectId },
_user: { type: Schema.ObjectId, ref: 'users'},
title: { type: String },
});
ВАРИАНТ 2
var UploadSchema = new Schema({
_id: { type: Schema.ObjectId },
user: {
name: { type: String },
email: { type: String },
avatar: { type: String },
//...etc
},
title: { type: String },
});
С «Вариант 2», если какие-либо данные в коллекции Пользователи
изменятся, мне придется обновить это во всех связанных записях Выгрузка
. С другой стороны, с «Вариантом 1» я могу просто расслабиться и позволить populate ()
гарантировать, что последние данные пользователя всегда отображаются.
Значительны ли накладные расходы на использование populate ()
? Что лучше всего подходит для этого распространенного сценария?