我目前正在开发一个 nodejs 和 mongodb 项目,我将在其中为用户之间的网站实现即时消息传递功能。我需要帮助的是要存储在我们的 mongodb 数据库中的对象结构。
要求是:
- 网站的任何用户都应该能够向其他用户发送消息
- 消息应该分组在类似于论坛的线程中,其中每个线程都是在用户通过其演示页面向另一个用户发送消息时创建的
- 发件人和/或收件人应该能够回复线程
- 即使收件人/发件人删除了整个线程(或仅删除该线程中的特定消息),其他用户仍应看到所有消息(如果他/她没有删除它们)
- 每个用户都有收件箱,已发送,垃圾箱,就像普通邮箱一样
这是我到目前为止所拥有的
messages:[{
'_id' : '502c21e3833ea71307001d56',
'from' : {
'_id': '503fdbfa294f6db74de649ea',
'name': 'Kumar'
},
'to' : {
'_id' : '5061e2a61ac427f716000378',
'name' : 'Elan'
},
'subject' : 'sit amet consectetur',
'message' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit',
'sent' : '2012-09-26T18:04:26.656Z',
'last_reply': '2012-09-26T18:04:26.656Z',
'reply' : [
{
'content': 'dolor sit amet consectetur adipiscing elit.',
'to': {
'_id': '503fdbfa294f6db74de649ea',
'name': 'Kumar'
},
'from' : {
'_id': '5061e2a61ac427f716000378',
'name': 'Elan'
},
'date': '2012-09-26T18:04:26.656Z'
},
{
'content': 'consectetur adipiscing elit. ',
'to': {
'_id': '5061e2a61ac427f716000378',
'name': 'Elan'
},
'from' : {
'_id': '503fdbfa294f6db74de649ea',
'name': 'Kumar'
},
'date': '2012-09-26T18:04:26.656Z'
}
]
}]
消息用户映射
messages_user_mapping : [{
'_id' : '502c21e3833ea71307001222',
'msg_id' : '502c21e3833ea71307001d56',
'user' : {
'_id': '503fdbfa294f6db74de649ea',
'name': 'Kumar'
},
'sent' : '1',
'inbox': '0',
'trash': '0',
'soft_delete':{
'msg_id' : '502c21e3833ea71307001d56',
'from' : 'inbox'
}
},
{
'_id' : '502c21e3833ea71307001222',
'msg_id' : '502c21e3833ea71307001d56',
'user' : {
'_id': '5061e2a61ac427f716000378',
'name': 'Elan'
},
'sent' : '0',
'inbox': '1',
'trash': '0',
'soft_delete':{
'msg_id' : '',
'from' : ''
}
}
]
我正在寻找更好的模式结构。