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