多个帐户的嵌套关联
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.?
个人帐户。也不确定我是否应该使用 embedded 与 object 参考以及在什么地方合适。我正在兜圈子试图让协会匹配。
我建议您使用嵌入式保持简单。
这里有一个简单的建议:
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
,所以拥有它似乎是多余的
我正在尝试将各种登录方法与 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.?
个人帐户。也不确定我是否应该使用 embedded 与 object 参考以及在什么地方合适。我正在兜圈子试图让协会匹配。
我建议您使用嵌入式保持简单。
这里有一个简单的建议:
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