Установщики Mongoose 4.1 не работают с полями ObjectID - PullRequest
0 голосов
/ 30 октября 2018

У меня есть схемы вроде:

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. С "строковыми" полями все отлично работает ...

...