2015-02-19 2 views
4

Я пытаюсь сделать некоторые отношения между моими схемами, и у меня есть некоторые проблемы с моим решением. Вот моя схема устройства:Ссылка на схему Mongoose и неопределенный тип 'ObjectID'

var deviceSchema = schema({ 
    name : String, 
    type : String, 
    room: {type: mongoose.Types.ObjectId, ref: 'Room'}, 
    users: [{type:mongoose.Types.ObjectId, ref: 'User'}] 
}); 

и здесь Номер схемы:

var roomSchema = schema({ 
    name : String, 
    image : String, 
    devices: [{type: mongoose.Types.ObjectId, ref: 'Device'}] 
}); 

Mongoose бросает ошибку

TypeError: Undefined type ObjectID at room Did you try nesting Schemas? You can only nest using refs or arrays.

Если изменить room: {type: mongoose.Types.ObjectId, ref: 'Room'}, на room: {type: Number, ref: 'Room'}, все работает. Не могли бы вы объяснить мне, почему это происходит?

ответ

10

mongoose.Types.ObjectId - это функция конструктора ObjectId, которую вы хотите использовать в определениях схемы: mongoose.Schema.Types.ObjectId (или mongoose.Schema.ObjectId).

Так deviceSchema должен выглядеть следующим образом, вместо:

var deviceSchema = schema({ 
    name : String, 
    type : String, 
    room: {type: mongoose.Schema.Types.ObjectId, ref: 'Room'}, 
    users: [{type:mongoose.Schema.Types.ObjectId, ref: 'User'}] 
}); 
+3

С 'mongoose.Schema.Types.ObjectId' он работает. Странно то, что с помощью 'mongoose.Types.ObjectId' я смог создать объект пользователя и объект устройства и имел отношения между ними. Произошла ошибка при добавлении второй модели (комнаты) и была сделана связь между комнатой и устройством – niba