2016-05-01 89 views
0

我最近开始使用Firebase,并在其中一个演示应用程序中实现了类似的功能。你基本上可以刷卡的用户,然后滑动相继我存储在以下格式/路径的数据:直接消息与firebase聊天 - 数据结构?

matches/randomeFirebaseID()/{ 
userid: true 
otherUserid: true 
} 

这是相当不错的再次查询他们,但我怎样才能使一个安全规则不允许重复这样的条目。这甚至可能与安全规则?或者我应该以另一种形式构建数据? 可以事先简单地查询它们,并检查一个匹配项是否已经存在,但这需要一些额外的时间,我不想浪费。

感谢您的帮助!

+0

由于您的父节点是随机生成的,因此它永远不会重复。你指的是用户标识节点吗?一般来说,Firebase规则并不旨在过滤数据。请查看[保护您的数据](https://www.firebase.com/docs/security/guide/securing-data.html),特别是现有数据与新数据部分,最重要的是规则不是过滤器部分。你最好的选择是一个超快的查询,不会真的增加任何开销。 – Jay

+0

嘿周杰伦,是的,我不想为同样的两个人重复“匹配”。我担心这会是一个小问题,而不是“最佳实践”,但我会试一试!谢谢! –

+0

听起来你应该根据这两个uid来生成密钥。在这里看到我的答案:http://stackoverflow.com/questions/33540479/best-way-to-manage-chat-c​​hannels-in-firebase/33547123#33547123 –

回答

3

对于任何有兴趣的人。解决方案非常简单,就像往常一样:)

我使用了两个用户ID作为对话的关键。而要知道,哪一个先行,我只是命令他们,所以他们总是以同样的方式安排。

举例: userid1:ABCDE userid2:zudfg

所以对话id会是:abcdezudfg

这使得它非常方便地访问它,甚至检查渡过这些用户已经存在或之间的对话不。

我希望这会有所帮助。