猫鼬,参考数组,是对还是错?

问题描述 投票:0回答:1

当我浏览我的节点mongoose模式代码时,我看到我以两种不同的方式编写了引用数组。

在代码的某些部分,我写过管理器是一组用户引用

managers: [{
  type: mongoose.Schema.ObjectId,
  ref: 'user'
}]

但在其他部分,我说管理器是对用户的引用,其中类型是objectIds数组

managers: {
  type: [mongoose.Schema.ObjectId],
  ref: 'user'
}

这两种方式似乎都有效但有没有人知道是否有任何区别?这是一种不正确的做法吗?

编辑:

我发现两者之间有所不同。当我查询模型并想要填充管理器时,第二个版本不返回实际用户。第一个填充管理器并返回一个用户对象数组,但第二个返回一个空数组,即使管理器数组包含用户的ObjectIds ......

编辑2:

可能是在单独的comllection中引用模式时应该使用第一个示例。如果你看看https://mongoosejs.com/docs/populate.html中的所有例子,他们就像我的第一个例子。第二个看起来就像在同一个集合中使用子模式时一样。

node.js mongoose
1个回答
0
投票

编辑:确认here应该使用第二种方法(转到线程的底部)。

由于在您的用例中无关紧要,我建议您使用上面链接的线程中建议的表单,因为在发布引用的情况下它可能很重要。


mongoose docs似乎使用第二种方法。对我来说逻辑上也更有意义,因为我读它的类型是一个对象数组。我不相信他们正式建议一个或另一个。

查看this page的一些例子。

© www.soinside.com 2019 - 2024. All rights reserved.