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

Mongoose schema reference and undefined type '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'}, 一切正常。你能解释一下为什么会这样吗?

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