我正在尝试在我的架构之间建立一些关系,但我的解决方案存在一些问题。 这是我的设备架构:
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'},
,一切正常。你能解释一下为什么会这样吗?
答案 0 :(得分:29)
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'}]
});