我有类似的架构:
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 :(
})
在前端发送给我的情况下,已更改的对象BUT具有填充的类字段,例如:
class: {_id: mongodID , name: "Chemestry"}
我只需要进行更新“ _id”,并且需要在setter中而不是在控制器中进行。这只是一个例子。我有带有嵌套数组的更复杂的对象。
class: {_id: mongodID , name: "Chemestry"}
到
class: mongodID
我做错了什么?
P.S。使用“字符串”字段,一切正常...