我正在设计一个数据库,用于存储用户的聊天记录,其中发件人和收件人可以是同一个人。所以文件应该是这样的
{sender :1 ,receiver:2}
但如果用户插入文档{sender :1,receiver :1}
,那么它应该给出错误。如何在javascript console.please guideline.i设计数据库mongodb。
答案 0 :(得分:2)
在保存每封邮件之前,应在应用程序代码中检查此类约束。在shell中,您可以使用这样的函数来检查消息是否有效,然后再将其保存到数据库中。
function sendMessage(message) {
if(message.sender == message.receiver) {
throw "Cannot send message to self";
} else {
db.messages.save(message);
}
}
您还可以考虑将[sender, receiver]
关系编码为消息对象中的双元素列表,其中order定义哪个用户是发件人,哪个用户是接收者。这将允许您轻松搜索涉及给定用户的所有消息。
例如,如果Message对象的格式为{ senderReceiver: [1, 2] }
,
然后,您可以使用查询db.messages.find({senderReceiver: 2})
找到涉及用户2的所有消息。
答案 1 :(得分:0)
你可以设置一个检查点,msgHistory{sender:1,receiver:1}
是对象,检查发送和接收是否相等if(msgHistory.sender == msgHistory.receiver){ // Do nothing } else {//Do something }
...如果你问我sender
和{{1} }应该用布尔值赋值,这样才能有效。