当您有不同类型的用户时,在mongoDB中设计用户模式的最佳实践



陷入计划用户模式。让我定义一下场景我有两种类型的用户
-普通用户
-devs

普通用户:只有电子邮件和姓名字段可存储,他们只能上网
Devs:可以有更多与他们的投资组合相关的字段,如github链接、体验、域名等。

我目前有两个计划
第一种方法:制作两个集合
-users{name,email,role}
-公文包{userId,experience,domain..}
(只有devs角色才能制作公文包后的信息(

第二种方法:只制作一个集合并在该集合中嵌入公文包
-users{
角色、电子邮件、姓名、
投资组合:{域名、exp.}

但我在第二种方法中面临的唯一问题是限制";投资组合";仅由角色为开发人员的人员更新字段。

需要建议来模拟这种类型的场景
使用:
Node.js v14+
Mongoose 5.9+
MongoDB 4.4

看看鉴别器,它们非常适合这些东西。

https://mongoosejs.com/docs/discriminators.html

它们行为独立,但共享相同的集合。当您需要查询所有用户时,您可以使用User模型,否则可以使用generalUser鉴别器或devUser鉴别者进行查询。它们可以有自己的方法,甚至可以有自己独特的索引。

最新更新