Reputation: 2911
I'm trying to do some relations between my schemas and I have some problems with my solution. Here is my device schema:
var deviceSchema = schema({
name : String,
type : String,
room: {type: mongoose.Types.ObjectId, ref: 'Room'},
users: [{type:mongoose.Types.ObjectId, ref: 'User'}]
});
and here room schema:
var roomSchema = schema({
name : String,
image : String,
devices: [{type: mongoose.Types.ObjectId, ref: 'Device'}]
});
Mongoose throws error
TypeError: Undefined type
ObjectID
atroom
Did you try nesting Schemas? You can only nest using refs or arrays.
If I change room: {type: mongoose.Types.ObjectId, ref: 'Room'},
to room: {type: Number, ref: 'Room'},
everything works. Could you explain me why this is happening?
Upvotes: 17
Views: 16819
Reputation: 311835
mongoose.Types.ObjectId
is the ObjectId
constructor function, what you want to use in schema definitions is mongoose.Schema.Types.ObjectId
(or mongoose.Schema.ObjectId
).
So deviceSchema
should look like this instead:
var deviceSchema = schema({
name : String,
type : String,
room: {type: mongoose.Schema.Types.ObjectId, ref: 'Room'},
users: [{type:mongoose.Schema.Types.ObjectId, ref: 'User'}]
});
Upvotes: 31