I am trying to create the model for my mongodb database using mongoose. This is what I am trying to do:
var Class = mongoose.model('Class', {className: String, marks: [{type: Number}], grades: [{type: Number}]}); var User = mongoose.model('User', {email: String, classes: [Class] }); //Lets create a new user var class1 = new Class({className: 'aaa', marks: [72, 88, 63], grades: [30, 40, 30]}); var user1 = new User({email: '[email protected]', classes: [class1]});
Saving class1
seems to work okay but when I check mongodb, this is displayed:
{ "_id" : ObjectId("someId"), "className" : "TEST1234", "grades" : [ 30, 40, 30 ], "marks" : [ 72, 88, 63 ], "__v" : 0 }
What is "__v : 0"
?
Saving the user is not successful at all, this is the following error:
ValidationError: CastError: Cast to Array failed for value "{ marks: [ 72, 88, 63 ], grades: [ 30, 40, 30 ], _id: someId, className: 'TEST1234' }" at path "classes" `
What exactly does the error mean? Why is it casting anything to a array? Shouldn't classes: [Class]
be an array of type class
?
Man, I had a similar issue creating an Schema like this:
QuestionnaireSchema = mongoose.Schema({ formId: Number, name: String, questions: [ { type: String, title: String, alternatives:[{ label: String, value: "Mixed" }] } ] });
My mistake was that I am using "type" as a field name and this is reserved word in mongoose.
I just change:
type: String,
to
formType: String,
and that works.
see: https://github.com/Automattic/mongoose/issues/1760
Explicitly defining the type rule on a property called type is allowed and won't throw an error. like this:
type: {type: String}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With