Mongoose schema reference and undefined type '

2019-01-18 04:43发布

问题:

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 at room 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?

回答1:

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