Я могу добавить виртуальные геттеры и сеттеры в схему 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