Flutter 如何在 Firebase Firestore 数据库中构建聊天应用程序的数据(13)
介绍
在本文中,我们将学习如何在 Firebase Firestore 数据库中构建聊天应用程序的数据。这是 Flutter Using Firebase 中的聊天应用系列的最后一篇完整解释的文章。Firestore 是 NoSQL 数据结构,因此我们需要逻辑地管理数据关系,并且在某些情况下我们保留一些数据重复和冗余以减少数据库使用配额。
在像 MySQL 这样的关系数据库中,我们总是负责数据规范化规则,但在 Firestore 数据结构中,我们负责使用配额,其中包括读取次数、写入次数和删除次数。Google 提供 Spark Package 作为免费包,其中包括 50K 读取、20K 写入和 20K 删除。您还可以在Firebase Pricing上查看其他计划。
Firestore 数据库由三部分组成
-
集合 – 集合只不过是一组文档。
-
文档 – 文档是子集合和字段的集合。
-
字段 – 字段由属性和值组成。值的类型为字符串、数字、布尔值、地图、数组、空值、时间戳、地理点和参考。
-
如果您观察 Firestore 的构建块,您会发现它类似于 JSON 结构,您可以在其中以任何形式、任何结构和任何深度存储数据。
聊天应用要求如下,
-
身份验证:我们使用 Firebase Phone Authentication(手机号码是用户的唯一标识符)
-
个人资料管理:姓名、手机和个人资料图片(个人资料图片存储在 Firebase Storage中)
-
联系人管理:
-
聊天:文本和图像消息(图像存储在 Firebase Storage中)
让我们开始构建聊天应用程序的数据
我假设您熟悉如何创建 firebase 项目并在其中初始化 firestore 数据库。如果您是初学者并且对 firestore 没有概念,您可以查看我的文章Firebase Firestore CRUD Operation In Flutter。
我们有三个根集合mobiles、chats 和users。请查看下面的屏幕截图。
-
-
Mobiles
Mobiles 集合包含唯一的手机号码作为文档 id 和 uid 作为字段,这是用户集合文档 id 的参考。 -
Users
Users集合包含有关用户的信息,包括用户 ID(文档 ID)、姓名、手机号码和个人资料图片,还包含联系人集合,其中包含用户添加的联系人(朋友),他/她可以与之聊天。请参阅以下 2 个屏幕截图。-
- 个人资料照片包含 Firebase 存储的路径。
- 我们将复制用户添加的联系人的姓名和手机号码,以减少阅读次数。
- Chats
Chats 集合包含聊天消息(文本和图像)。请参阅以下 2 个屏幕截图。 -
-
-
- 我们已经构建了一对一聊天的代码,因此我们存储了 contact1 和 contact2,我们将通过它们来识别聊天是在哪两个用户之间
- 我们已经构建了一对一聊天的代码,因此我们存储了 contact1 和 contact2,我们将通过它们来识别聊天是在哪两个用户之间
我们已经存储了 image_url 是发送图片的 url,我们在消息文档中存储了 sender_id 和 sender_name 以减少读取次数。
-
-
-
-
所以我们已经看到了如何在 Google Firebase Firestore 中构建数据。我们将在下一篇文章中寻找整个聊天应用程序的实现。
结论
在本文中,我们学习了如何根据我们的要求定义 Firestore 数据库的架构。您还可以根据需要修改此结构。这是构建数据库的一种方案,但您可以通过更多练习来进一步增强它。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!