Mongoose - CastError: "Passing to undefined failed for value" [object of object] "on the path" trainers "

I am new to node.js, so this might be a dumb mistake. I have a mongodb scheme:

seller_schema = mongoose.Schema({ name:String, email:String, trainers:[{ type: mongoose.Schema.Types.ObjectId, ref: 'trainers' }] }); seller_collection=db.model('seller',seller_schema); 

and trainer_collection:

 trainer_schema = mongoose.Schema({ trainer_fname:String, trainer_lname:String, trainer_photo:String }); trainer_collection=db.model('trainers',trainer_schema); 

I have a function that adds a seller to the database. The number of trainers depends on the situation. So, I am implementing $push to add additional trainers before calling the .save function.

 function createSeller(req, res){ var seller = new seller_collection({ name: req.query.first_name, email:req.query.email }); for(i=0;i<req.query.num_trainers;i++){ try{ var trainer_object={ "trainer_fname": req.query.trainer_fname, "trainer_lname": req.query.trainer_lname, "trainer_photo": req.query.trainer_photo } console.log(seller._id); seller_collection.update({ _id: seller._id },{ $push: { "trainers":trainer_object } },function(error,course){ console.log(error); if(error){ res.status(500).json({ message: "failure", status_code:"500", error:error }); }else{ res.status(200).json({ message: "success", status_code:"200" }); } }); }catch(ex){ console.log(ex); res.status(500).json({ message: "failure", status_code:"500", res:res }); } } } 

Stacktrace:

 { [CastError: Cast to undefined failed for value "[object Object]" at path "trainers"] stack: 'Error\n at MongooseError.CastError (C:\\path\\node_modules\\mongoose\\lib\\error\\cast.js:18:16) at SchemaArray.cast (C:\\path\\node_modules\\mongoose\\lib\\schema\\array.js:156:15) at SchemaArray.cast (C:\\path\\node_modules\\mongoose\\lib\\schema\\array.js:167:17) at Query._castUpdateVal (C:\\path\\node_modules\\mongoose\\lib\\query.js:2357:22)\n at Query._ walkUpdatePath (C:\\path\\node_modules\\mongoose\\lib\\query.js:2273:27) at Query._castUpdate (C:\\path\\node_modules\\mongoose\\lib\\query.js:2202:23) at Query.update (C:\\path\\node_modules\\mongoose\\lib\\query.js:2035:22)\n at Function.update (C:\\path\\node_modules\\mongoose\\lib\\model.js:174 1:13) at createSeller (C:\path\\routes\\seller.js:269:31) at Query.<anonymous> (C:\\path\\routes\\seller.js:12:21) at C:\\path\\node_modules\\mongoose\\node_modules\\kareem\\index.js:177:19 at C:\\path\\node_modules\\mongoose\\node_modules\\kareem\\index.js:109:16 at process._tickCallback (node.js:355:11)', message: 'Cast to undefined failed for value "[object Object]" at path "trainers"', name: 'CastError', kind: undefined, value: [{"trainer_photo":"x"}], path: 'trainers' } 
+4
source share
1 answer

For those who face the same problem.

I changed the trainers field in a scheme like trainers:[trainer_schema] and edited the $push method to seller.trainers.push(trainer_object);

+2
source

All Articles