多个帐户的嵌套关联

Nested associations for multiple accounts

我正在尝试将各种登录方法与 mongo 中的相同 User 模型相关联。

const UserSchema = new Schema({
  email: String
  isVerified: { default: false, type; Boolean }
  accounts: {
    ref: 'Account',
    type: Schema.Types.ObjectId
  }
})

const AccountSchema = new Schema({
  facebook: {
    ref: 'FacebookAccount',
    type: Schema.Types.?
  },
  local: {
    ref: 'LocalAccount',
    type: Schema.Types.?
  },
  twitter: {
    ref: 'TwitterAccount',
    type: Schema.Types.?
  },
})

const LocalAccount = new Schema({
  email: String,
  name: String,
  phone: String,
  password: String,
  _user: {
    ref: 'User',
    type: Schema.Types.ObjectId
  }
}) 

我希望返回给我的数据看起来像:

{
  _id: '12345789',
  email: 'turdFerguson@gmail.com',
  accounts: {
    facebook: { ... }
    local: { ... }
  }
}

我真的不确定这些关联,因此 Schema.Types.? 个人帐户。也不确定我是否应该使用 embeddedobject 参考以及在什么地方合适。我正在兜圈子试图让协会匹配。

我建议您使用嵌入式保持简单。

这里有一个简单的建议:

const UserSchema = new Schema({
    isVerified: { 
        default: false, 
        type: Boolean 
    },
    accounts: {
        local: {
            email: String,
            name: String,
            phone: String,
            password: String
        },
        facebook: {
            // fields related to Facebook
        },
        twitter: {
            // fields related to Twitter
        }
    }
})

我删除了 email,因为你已经有了 accounts.local.email

,所以拥有它似乎是多余的