我一直在研究snapchat克隆,以了解如何使用Firebase。
我目前在如何最好地构造数据结构上处于困境,以便可以模仿Snapchat的简单版本。
我想在简化版本中做什么:
我真的不需要什么了。我并不是在尝试实现能够发送文本消息之类的当前功能。我只想将图片发送给朋友,然后将其发布到公共提要中。
我的数据结构如下:
并将其分解:
用户:
用户之间的友谊结构如下:
结构如下的个人消息:
这样的对话的索引:
现在,我已经在堆栈和在线上看到很多帖子,它们用于在聊天应用程序中构造消息。我所坚持的是如何构造数据库,以便可以将消息发送给用户,以便只有接收用户的用户才能看到它。
我一直在阅读Firebase文档,我知道我应该对数据进行非规范化,以便可以更有效地读取数据,但是我无法真正用Firebase做到最好。
在当前的user-messages
实现中,我将必须在代码中实现检查,以查看消息是否由用户发送,然后阻止用户查看消息。理想情况下,仅将消息发送给的人才能看到该图像。 (就像手套一样)
有关如何操作的任何建议?
我需要在用户树中对聊天/消息有一些参考吗?
答案 0 :(得分:1)
问题似乎是
如何构造数据库,以便可以将消息发送给用户,以便 只有接收用户的用户可以看到
有很多“方向”,但这里有两个。
1)手动“告诉”每个用户有关图片的信息
users
uid_0
pics_for_me
pic_0
url: "http://...."
pic_1
url: "http://...."
my_users
uid_2: true
uid_1
pics_for_me
my_users
uid_0: true
uid_2: true
使用这种结构,uid_1有两个用户要与他们共享照片(uid_0和uid_2),因此当需要共享照片时,读取my_users节点,对其进行迭代,并在其中存储指向该照片的链接用户各自的pics_for_me节点。显然,您可以存储其他数据,例如数据来自谁等。当uid_0登录时,读取pic_for_me节点并查看图片,可能在完成后将其删除。
2)观察用户图片的节点
users
uid_0
name: "Henry"
uid_1
name: "Joe"
all_pics
pic_0
for_user: "uid_0"
url: "http://..."
在这种情况下,uid_0登录并将查询添加到all_pics中,以查找包含其用户ID的任何for_user。这将适用于1-1情况(图片是供一个用户使用)。如果您希望多个用户获得一张照片,那么...
all_pics
pic_0
uid_0: true
uid_1: true
,当用户登录时,向该用户uid为true的all_pics添加查询,然后每次添加具有其uid子元素的图片时,他们都会收到一个事件。