Как эффективно моделировать и хранить «обмен сообщениями» между пользователями в mongoose / mongodb. (Пользователи могут войти в систему как «Клиент» или «Работник») - PullRequest
0 голосов
/ 08 апреля 2020

Я создаю систему фриланса (например, 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 для любого из типов профиля. Этот подход эффективен или есть лучший способ смоделировать этот сценарий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...