如何为一对一聊天应用编写 Firestore 规则?

Posted

技术标签:

【中文标题】如何为一对一聊天应用编写 Firestore 规则?【英文标题】:How to write firestore rules for one to one chat app? 【发布时间】:2021-08-12 02:14:27 【问题描述】:

我使用 firebase 和 firestore 为网站制作了一对一的聊天应用。现在我想为此编写firebase firestore规则。该应用程序以这种方式工作......首先,如果用户是 sandeyshc@gmail.com,那么用户会获取聊天 ID 和朋友 gmail...然后用户使用聊天 ID 签入消息选项卡并获取所有与聊天相关的详细信息。现在我想为这个应用程序实施 Firestore 规则。如何实现?

【问题讨论】:

【参考方案1】:

解决这个问题的最佳方法是结合使用 Firestore 规则和云函数。

首先,两个用户应该将相同的聊天记录存储在不同的位置。 使用 firestore 规则,您应该限制每个用户只能更改自己的聊天,并且只能在该聊天中编写自己的消息。

当他编写自己的消息时,应触发云功能,向其他用户发送推送通知,并使用云功能中的管理员权限将该消息写入其他用户的聊天中。

这样,两个用户可以在不同的位置进行相同的聊天。您也可以通过让他们访问单个聊天来做到这一点,但在未来考虑一个用户可以删除聊天或消息的用例。您可能不希望一个用户可以删除另一个用户的消息。

还有一个重要注意事项:避免将用户保存在email 下。您应该始终将它们存储在 Application Auth User Uid 下。电子邮件可以包含不支持作为数据库键的chars,并且您将来可以通过使用电子邮件来解决其他不同的错误。

这是一个 example 的开源聊天应用程序,由 react 和 firebase 制作。它使用实时数据库,但您可以轻松地重用这个概念。您可以在那里看到函数是如何编写的以及如何在前端使用它。

【讨论】:

你能在代码沙盒上运行它吗?我在那边遇到错误codesandbox.io/embed/github/TarikHuber/react-most-wanted/tree/…

以上是关于如何为一对一聊天应用编写 Firestore 规则?的主要内容,如果未能解决你的问题,请参考以下文章

如何为使用 Firestore 文档快照的模型编写测试

用于聊天应用的 Firebase 实时数据库或 Firestore? [关闭]

关于如何为聊天应用设计良好架构的建议?

如何为android数据绑定点击监听器编写proguard规则?

如何为从 Firestore 填充的 RecyclerView 实现过滤器?

Firestore 安全规则 - 允许基于其父文档数据读取子集合