Mongoose: populate () / DBref или дублирование данных?

У меня есть две коллекции:

  1. Пользователи
  2. Загрузки


С каждой загрузкой связан Пользователь , и мне нужно чтобы узнать их подробности при просмотре Загрузки . Лучше всего продублировать эти данные в записи «Загрузки» или использовать 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 () ? Что лучше всего подходит для этого распространенного сценария?

13
задан Community 22 September 2017 в 18:01
поделиться