当我浏览我的节点mongoose模式代码时,我看到我以两种不同的方式编写了引用数组。
在代码的某些部分,我写过管理器是一组用户引用
managers: [{
type: mongoose.Schema.ObjectId,
ref: 'user'
}]
但在其他部分,我说管理器是对用户的引用,其中类型是objectIds数组
managers: {
type: [mongoose.Schema.ObjectId],
ref: 'user'
}
这两种方式似乎都有效但有没有人知道是否有任何区别?这是一种不正确的做法吗?
我发现两者之间有所不同。当我查询模型并想要填充管理器时,第二个版本不返回实际用户。第一个填充管理器并返回一个用户对象数组,但第二个返回一个空数组,即使管理器数组包含用户的ObjectIds ......
可能是在单独的comllection中引用模式时应该使用第一个示例。如果你看看https://mongoosejs.com/docs/populate.html中的所有例子,他们就像我的第一个例子。第二个看起来就像在同一个集合中使用子模式时一样。