mongoose – CastError:'Cast to undefined failed for value“”at path“trainers”

我对node.js是新手,所以这可能是一个愚蠢的错误。 我有这样的MongoDB模式:

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

和trainer_collection是:

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

我有一个function,将卖家添加到数据库。 教练的数量因情况而异。 所以,我正在执行一个$push来调用.save函数之前添加额外的培训师。

 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 }); } } } 

堆栈跟踪:

 { [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' } 

对于任何人都面临同样的问题。

我改变了培训师领域的培训师领域trainers:[trainer_schema]并编辑$push方法到seller.trainers.push(trainer_object);