У меня есть схемы вроде:
let fixClassID = (_this)=>{
if(Object.keys(_this).length >= 2)
if(_this.hasOwnProperty('_id'))
_this = new mongoose.Types.ObjectId(_this['_id'])
return _this
}
var student = new Schema({
name: {type: String},
class: { type: Schema.Types.ObjectId, ref: 'class', set: fixClassID}
})
var school = new Schema({
name: {type: String},
students: [student],
})
school.pre('save', function(next) {
//Here I got Error AND OLD OBJECT :(
})
В ситуации, когда интерфейс отправляет мне измененный объект, НО с заполненным полем класса, например:
class: {_id: mongodID , name: "Chemestry"}
Мне нужно поставить на обновление только "_id", и мне нужно сделать это в сеттере, а не в контроллере. Это просто пример. У меня есть более сложный объект с вложенными массивами.
class: {_id: mongodID , name: "Chemestry"}
до
class: mongodID
Что я делаю не так?
P.S. С "строковыми" полями все отлично работает ...