Tuesday, 15 June 2010

javascript - mongoose.js CastError: Cast to number failed for value "[object Object]" at path "undefined" -



javascript - mongoose.js CastError: Cast to number failed for value "[object Object]" at path "undefined" -

using mongoose.js node.js. have schema:

var photo = new schema({ url:string ,description:string ,created_by:{type:objectid, ref:'user'} ,created_at:{type:date, default:date.now()} }); var user = new schema({ name:{type:string,index:true} ,email:{type:string,index:true, unique:true} }); //task model var task = new schema({ title:string ,created_by:{type:objectid, ref: 'user'} ,created:{type:date, default:date.now()} ,responses:[{ type:number ,user:{type:objectid, ref: 'user'} ,comment:string ,avatarurl:string ,photo:{type:objectid, ref: 'photo'} ,created:{type:date, default:date.now()} }] }); //group model var grouping = new schema({ name:string ,tasks:[task] });

and code errors out (group fine, task @ idx fine,responses empty array,user valid,photo valid):

var typephoto = 6; var resp = { type: typephoto//photo ,user: user._id ,photo: photo._id }; group.tasks[taskidx].responses.push(resp); //errors out here

at point next error:

/home/admin/notitws/node_modules/mongoose/lib/utils.js:434 throw err; ^ casterror: cast number failed value "[object object]" @ path "undefined" @ schemanumber.cast (/home/admin/notitws/node_modules/mongoose/lib/schema/number.js:127:9) @ array.mongoosearray._cast (/home/admin/notitws/node_modules/mongoose/lib/types/array.js:78:15) @ object.map (native) @ array.mongoosearray.push (/home/admin/notitws/node_modules/mongoose/lib/types/array.js:187:23) @ exports.taskaddphoto (/home/admin/notitws/routes/group.js:1097:35) @ promise.exports.createphoto (/home/admin/notitws/routes/photos.js:106:4) @ promise.addback (/home/admin/notitws/node_modules/mongoose/lib/promise.js:128:8) @ promise.eventemitter.emit (events.js:96:17) @ promise.emit (/home/admin/notitws/node_modules/mongoose/lib/promise.js:66:38) @ promise.complete (/home/admin/notitws/node_modules/mongoose/lib/promise.js:77:20)

any ideas on how prepare or may causing it?

thanks! -matt

ps don't know if matters in phone call grouping populating tasks.responses.user , tasks.responses.photo , tasks.created_by.

the "type" keyword used mongoose determine type of field. mongoose thinks responses of type number instead of array.

try:

responses:[{ type: {type: number} ,user:{type:objectid, ref: 'user'} ,comment:string ,avatarurl:string ,photo:{type:objectid, ref: 'photo'} ,created:{type:date, default:date.now()} }]

another alternative wrap response object schema then:

responses: [response]

javascript node.js schema mongoose

No comments:

Post a Comment