Я использую Nodejs Express и Mongoose ("mongoose": "^ 5.3.11",). Я пытаюсь добавить некоторые данные в коллекцию. Я получаю все правильные данные, но когда я использую $ push, появляется ошибка «CastError: преобразование во встроенный не удалось получить значение», я искал различные решения, но не могу понять.
это моя схема
var InstructorSchema= mongoose.Schema({
first_name:{
type: String
},
last_name:{
type:String
},
username:{
type:String
},
email:{
type:String
},
classes:[{
class_id:{type:[mongoose.Schema.Types.ObjectId]},
class_code:{type:String},
class_title:{type:String}
}]
});
var Instructor = module.exports = mongoose.model('Instructor', InstructorSchema);
Здесь я собираю данные из формы
info=[];
info['instructor_ID']=req.user.id;
info['instructor_username']=req.user.username;
info['class_id']=req.body.class_id;
info['class_code']=req.body.class_code;
info['class_title']=req.body.class_title;
Это мои данные
module.exports.register=function(info,callback){
instructor_ID=info['instructor_ID'];
instructor_username=info['instructor_username'];
class_id=info['class_id'];
class_code=info['class_code'];
class_title=info['class_title'];
Вот функция
var query = {username: instructor_username};
Instructor.findOneAndUpdate(
query,
{
$push: {
"classes": {
class_id: class_id,
class_code: class_code,
class_title: class_title
}
}
},
{ safe: true,
upsert: true
},
callback
);
Это ошибка
CastError: Cast to embedded failed for value "{ class_id: \'5be353ead45965c74d9e2853 \',\n class_code: \'ART101 \',\n class_title: \'Arts Fundamentals \' }" at path "classes"
at new CastError (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\error\cast.js:29:11)
at DocumentArray.cast (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\schema\documentarray.js:349:19)
at DocumentArray.cast (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\schema\documentarray.js:276:17)
at castUpdateVal (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\helpers\query\castUpdate.js:365:24)
at walkUpdatePath (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\helpers\query\castUpdate.js:165:24)
at castUpdate (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\helpers\query\castUpdate.js:79:18)
at model.Query._castUpdate (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\query.js:3861:10)
at castDoc (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\query.js:3889:18)
at model.Query.Query._findAndModify (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\query.js:3021:19)
at model.Query.Query._findOneAndUpdate (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\mongoose\lib\query.js:2732:8)
at C:\Users\user\Documents\Web Development\Node\elearning\node_modules\kareem\index.js:278:20
at _next (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\kareem\index.js:102:16)
at process.nextTick (C:\Users\user\Documents\Web Development\Node\elearning\node_modules\kareem\index.js:499:38)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)