Как получить доступ к виртуальным свойствам в заполненном массиве - PullRequest
0 голосов
/ 16 апреля 2019

Я могу добавить виртуальные геттеры и сеттеры в схему mongoose. Но когда я хочу получить к ним доступ при заполнении схемы, геттер не будет существовать.

У меня есть классы учеников, у учеников есть имя и фамилия. Свойство displayName определяется как виртуальный получатель для отображения «имени имени». Это работает, когда я получаю доступ к модели студентов напрямую. Но когда я захожу в класс, заполняя его учениками, displayName отсутствует.

const studentSchema = new Schema({
  name: {type: String, required: true },
  prename: {type: String, required: true }
}); 

studentSchema.virtual('displayName').get(function () {
    return this.prename + ' ' + this.name;
});

studentSchema.set('toObject', { virtuals: true });
studentSchema.set('toJSON', { virtuals: true });

const studentModel = mongoose.model('student', studentSchema);

//studentModel.find(...) returns objects with displayName

const classSchema = new Schema({
  name: {type: String, required: true },
  students: [{ type: Schema.Types.ObjectId, required: true, ref: 'student' }]
}); 

const classModel = mongoose.model('class', classSchema);

// classModel.find(...).populate('students')... returns class with students, but students don't have a displayName

Как добавить displayName в массив студентов при заполнении в классе? https://mongoosejs.com/docs/api.html#virtualtype_VirtualType-get

...