匹配用户 Firestore 数据库模型

Posted

技术标签:

【中文标题】匹配用户 Firestore 数据库模型【英文标题】:Matching users Firestore db model 【发布时间】:2019-04-17 22:27:33 【问题描述】:

我正在开发一款 Flutter 移动应用,以帮助人们与 DIY 专家建立联系。

该应用会将需要建议的人与专家联系起来,然后让他们在一对一的消息中聊天。例如,A 需要有关管道的建议,因此应用程序将他与知道如何管道的 B 联系起来。

我的数据库模型是使用 Firestore 来存储用户详细信息和 FCM 令牌。云功能向所有专家 FCM 令牌发送通知(在非专家需要帮助时通知他们)。

到目前为止,这是我的模型:

    Firestore:存储 2 组用户:非专家组和专家组。 当应用程序中的非专家点击“我需要帮助!”时,将数据库“needhelp”中的非专家字段标记为 true。 Firebase Cloud 功能监听变化,并将 FCM 发送到数据库中的所有专家 FCM 令牌。 ??当应用程序中的一位专家点击“我可以帮忙!”时,在数据库中创建新的聊天文档?? Firestore:创建新的消息文档、存储消息等

我的问题是第 4 步:当专家在客户端应用程序中点击“我可以提供帮助”时,如何在新的 1 对 1 聊天中匹配和连接专家和非专家。在点击时,专家客户端应用程序是否应该在 Firestore 的文档中设置新值?什么文件?这是什么数据库模型?

类似的应用是约会应用,例如火种。有趣的问题:Tinder Firestore 会是什么样子? :)

【问题讨论】:

所以您的应用基本上需要一个数据库架构,对吧? 是的,基本上是@AlexMamo。我看过你的youtube视频!!但我在上面的第 4 步找不到如何匹配用户。 您可以在我的教程中找到所有问题的答案。如需一对一聊天应用,请参阅此 Firestore chat tutorial @AlexMamo 我看过你们所有的视频,但没有回答我的问题。您的架构工作在您始终确切知道您将与谁联系的地方。在您的视频中:“第二个用户”/“第一个随机用户”/“第二个随机用户”。您的架构适用于普通聊天应用程序,因为始终知道谁需要连接。但是在我的应用程序中,我们永远不知道在匹配之前我们将连接哪些用户。我们不知道非专家会与谁联系。我们甚至不知道非专家是否会找到匹配项。所以我的数据库模型一定不一样。 一旦您将该属性更改为可用,这意味着您认识与您聊天的人。所以基本上整个问题是减少我视频中的架构。 【参考方案1】:

创建类似的聊天室:chatroom1、chatroom2、chatroom 3 .....

如果用户想加入 chatroom1 应该是空的,所以他会加入这个。

第二个用户想要加入并在聊天室 1 中创建了 1 个用户,因此他加入了聊天室并开始聊天

第三个用户过来发现聊天室 1 已满(其中有 2 人),所以他加入聊天室 2 并等待其他人加入,然后模式继续...... ..

【讨论】:

以上是关于匹配用户 Firestore 数据库模型的主要内容,如果未能解决你的问题,请参考以下文章

仅当 UID 与 Firebase Firestore 中的集合名称匹配时,如何读取集合?

模型Firestore数据

无法将 request.auth.id 与 Firestore 规则中的文档 ID 匹配

视图模型中的 Firestore 方法未在 SwiftUI onAppear 方法中调用

您如何获取与 Firestore 中的 authUser 相关的用户数据库详细信息?

Firestore 规则 - 动态路径