Mongoose模式引用和未定义类型' ObjectID'

时间:2015-02-19 21:59:08

标签: javascript node.js mongodb mongoose

我正在尝试在我的架构之间建立一些关系,但我的解决方案存在一些问题。 这是我的设备架构:

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

猫鼬抛出错误

  

TypeError:ObjectID处的未定义类型room您是否尝试过嵌套   架构?您只能使用refs或数组进行嵌套。

如果我将room: {type: mongoose.Types.ObjectId, ref: 'Room'},更改为room: {type: Number, ref: 'Room'},,一切正常。你能解释一下为什么会这样吗?

1 个答案:

答案 0 :(得分:29)

mongoose.Types.ObjectIdObjectId构造函数,您要在架构定义中使用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'}]
});