【发布时间】:2020-11-08 01:33:49
【问题描述】:
我有两个用户模式:
UserSchema1 = new mongoose.Schema({
firstName:{
type: String
}
})
UserSchema2 = new mongoose.Schema({
email:{
type: String
}
})
ChatMessageSchema = new mongoose.Schema({
senderId:{
type: mongoose.Schema.Types.ObjectId,
refPath: 'onModel',
required: true
},
onModel:{
type: String,
required: true,
enum: ['userSchema1', 'userSchema2']
},
message: {
type: String,
required: true
}
})
现在,我需要填充所有聊天消息。我需要如下结果:
[
{
senderId:{
firstName or email
},
onModel: userSchema1 / userSchema2,
message: "message"
},
{
}, ...
]
也就是说,如果发件人是 UserSchema1,那么它应该填充 firstName,如果它是 UserSchema2,它应该填充电子邮件。我无法填充所有字段,因为每个集合中有 20 多个字段。
简而言之,如果是 UserSchema1,它应该只填充 firstName,如果是 UserSchema2,它应该只填充电子邮件。
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query mongoose-schema