Я создаю систему фриланса (например, upwork или fiverr). В этой системе пользователи могут войти как наниматель или работник. поэтому набор сообщений для пользователя, вошедшего в систему в качестве наемника, полностью отличается от того, когда пользователь вошел в систему в качестве рабочего. Таким образом, чтобы дифференцировать пользователя на основе того, являются ли они «работником» или «нанимателем», у меня есть эта схема для сообщений
const messagesSchema = new mongoose.Schema({
sender: {
type: mongoose.Schema.Types.ObjectId,
refPath: 'senderRefPath'
},
receiver: {
type: mongoose.Schema.Types.ObjectId,
refPath: 'receiverRefPath'
},
senderRefPath: {
type: String,
enum: ['freelancerProfiles', 'clientProfiles']
},
receiverRefPath: {
type: String,
enum: ['freelancerProfiles', 'clientProfiles']
},
message: {
messageType: {
type: String,
enum: ['text', 'img', 'video']
},
body: {
type: String
}
},
seen: {
type: Boolean,
default: false
}
}, {
timestamps: true
})
Здесь я назначил два разных типа профиля для одного пользователя, а именно: « freelancerProfile "и" clientProfile ", и использовал" refPath ", чтобы динамически устанавливать" отправитель "и" получатель "ref для любого из типов профиля. Этот подход эффективен или есть лучший способ смоделировать этот сценарий?