我应该如何构建我的 Firebase Firestore 数据以复制 Slack 网络应用程序?

How should I structure my Firebase Firestore Data to replicate Slack web app?

基本上我正在尝试使用 React 和 Firebase/Firestore 构建一个类似于 Slack 的网络应用程序。我可以构建一个 chat-room-like-Slack 网络应用程序,用户可以在其中创建多个聊天频道。但是,我不知道如何复制 Slack 的 workspace 概念。以这个 URL 为例: https://app.slack.com/client/T01X6XXXXXX/X01X9XXXXXX ,/client/: 后面的数字: T01X6XXXXXX 是工作空间的唯一ID,只有被邀请的用户才能加入。加入后,受邀用户可以看到其他用户之前创建的所有频道。随机用户无法加入此工作区,因为他们不知道工作区的 ID。

所以我的问题是:如何使用 React/Firebase/Firestore 使用这个 workspace 概念构建聊天室?我应该如何构建我的 Firestore Db?

目前,我的 Firestore 数据如下所示:

/rooms/HgUYoCYI45DCTScIMYEG/messages

房间(collections)和消息(collections)之间的数字是频道ID。频道(文档)由channelNamechannelId.

组成

我只是一个初学者,我不知道这是否是一个愚蠢的问题。谢谢你的时间。

聊天室中的每个文档都应该有一个成员数组,您可以在其中存储用户 ID,如果用户打开某个聊天室,则在您的前端检查他们的 ID 是否在聊天室成员数组中(如果不在)重定向,如果您使用 fireStore,您也可以使用 collection('chatrooms').where('members','array-contains',userId)

轻松查询用户聊天室