在我的主页面中,我有一个用户列表,我想选择并打开一个频道与其中一个聊天.
我在想如果使用id是最好的方法并控制像USERID1-USERID2这样的频道的访问.
但是当然,用户2也可以打开相同的频道,所以我想找到一些更容易控制的东西.
如果你想帮助我,请使用firebase url / array在javascript中给我一个例子.
谢谢!
解决方法:
处理此类1:1聊天室的常用方法是根据用户ID生成会议室URL.正如您已经提到的,这个问题是任何一个用户都可以发起聊天,在这两种情况下他们都应该在同一个房间里.
您可以通过在复合键中按字典顺序排序用户ID来解决此问题.例如,使用用户名而不是ID:
var user1 = "Frank";
var user2 = "Eusthace";
var roomName = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);
console.log(user1+', '+user2+' => '+ roomName);
user1 = "Eusthace";
user2 = "Frank";
var roomName = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);
console.log(user1+', '+user2+' => '+ roomName);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
常见的后续问题似乎是如何显示当前用户的聊天室列表.上面的代码没有解决这个问题.在NoSQL数据库中很常见,您需要扩充数据模型以允许此用例.如果要显示当前用户的聊天室列表,则应对数据建模以允许该类型.最简单的方法是为每个用户添加一个聊天室列表到数据模型:
"userChatrooms" : {
"Frank" : {
"Eusthace_Frank": true
},
"Eusthace" : {
"Eusthace_Frank": true
}
}