我有一个Users
模式,其中为用户分配了role
-parent
,player
或admin
中的一个。
parent
和admin
由其电子邮件地址标识-他们必须具有唯一电子邮件地址,但不能具有用户名。 player
由用户名标识-他们必须具有唯一用户名,但没有电子邮件地址。player
必须具有一个parentId
字段(必填),但是对于其他角色,这是不适用的。显然,标识符必须是唯一的。
架构看起来像这样:
{
"_id": 123
"email": ... <--- parent has email address
"password": ...
"role": 'parent'
}
{
"_id": 456
"username": ... <--- player has username
"password": ...
"role": "player",
"parentId": 123, <--- player has parentId
}
{
"_id": ...
"email": ... <--- admin has email address
"password": ...
"role": "admin"
}
在这里我没有为每个角色使用单独的架构(或discriminator)似乎很奇怪。这是由于我使用的框架。
我尝试了各种方法来实现这一目标,但是有条件地强制实施required
和 unique
确实很困难。
我正在寻找有关解决方法的建议。