猫鼬模式验证取决于另一个字段的值

时间:2019-08-07 12:56:47

标签: mongoose mongoose-schema

我有一个Users模式,其中为用户分配了role-parentplayeradmin中的一个。

  • parentadmin由其电子邮件地址标识-他们必须具有唯一电子邮件地址,但不能具有用户名。
  • 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确实很困难。

我正在寻找有关解决方法的建议。

0 个答案:

没有答案