Ios Swift Firebase更新旧数据-实时数据库触发器

Ios Swift Firebase更新旧数据-实时数据库触发器,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,在下图中,我的应用程序中有消息,但当用户说更新他们的个人资料图像或名称时,下面的数据就变成了陈旧数据。我曾经遇到过“Firebase函数”,并且看到如果我使用Firebase函数,我可以保持这些数据的同步。然而,仅知道Swift,我不确定如何实现Firebase功能,以使我的消息与用户配置文件中不断变化的数据保持同步。有人能帮我指出正确的方向,告诉我如何在我的项目中实现这一点吗?在swift或任何相关教程中都没有找到任何示例代码。非常感谢您的帮助 根据问题中的评论和结构,数据变得陈旧的原因是数

在下图中,我的应用程序中有消息,但当用户说更新他们的个人资料图像或名称时,下面的数据就变成了陈旧数据。我曾经遇到过“Firebase函数”,并且看到如果我使用Firebase函数,我可以保持这些数据的同步。然而,仅知道Swift,我不确定如何实现Firebase功能,以使我的消息与用户配置文件中不断变化的数据保持同步。有人能帮我指出正确的方向,告诉我如何在我的项目中实现这一点吗?在swift或任何相关教程中都没有找到任何示例代码。非常感谢您的帮助


根据问题中的评论和结构,数据变得陈旧的原因是数据如何存储在Firebase中

一种选择是,当发送消息时,节点将写入消息,然后引用发送者信息。这使一切始终保持新鲜和最新

假设我们有一个users节点,其中存储的用户的UID是每个节点的密钥

users
   uid_0
     user_name: "Peter"
     user_age:  "32"
     gender:    "Male"
     business_name: "Peter's Plumbing Place"
     url: "http:...."
     type: "Customer"
   uid_1
     user_name: "Ralph"
     user_age:  "47"
     gener:     "Male"
     business_name: "Ralph's Repair Room"
     url: "http:...."
     type: "Employee"
然后我们有消息

messages
   msg_0
     msg_text: "Here's a message!"
     from_uid: "uid_0"
     to_uid:   "uid_1"
     timestamp: "20180110"
然后,用户uid_1向messages节点添加一个查询观察器,用于查找任何消息,其中to_uid为uid_1,以便通知他们传入消息。当他们收到它时,他们也会知道它是由uid_0发送的,并且可以调出他们的姓名、个人资料图像、年龄等

这样,所有数据都保持同步和最新,不存在过时的数据


这是消息传递应用程序结构的典型实现。

有一个很好的方法可以帮助您开始编写它们。答案就在你的问题中:你必须编写一个函数来定位和更新数据。当你说Firebase函数时,你确切的意思是什么?你是说云功能吗?如果是这样,就不需要这些来防止数据“过时”。但问题是,为什么这些数据会过时?换句话说,假设用户“Lukas Bimba”将其姓名更改为“Mr.Lukas Bimba”-Firebase中位于/name节点的数据将是名称:“Mr.Lukas Bimba”,这是当前(非陈旧)数据。所以它怎么会过时?@Jay它变成过时数据的方式是,我将用户凭据保存到他们发送的每条消息中。例如,他们的个人资料图像和名称。如果他们更新他们的配置文件图像,则保存在消息中的URL将变为空,因此不会显示任何图像注意:此处的最佳做法是将您的结构作为文本而不是图像包含。这样,如果我们想在回答中重复使用它们,我们不必重新键入所有这些内容。您可以通过Firebase控制台->右侧三个愚蠢的点->导出JSON以文本的形式访问您的结构。看,我明白了,但这是一个团体信使。因此,在我的应用程序中,我有3种类型的配置文件:客户、员工和业务管理员。我必须确保UID指向正确的查询,无论是客户、员工还是业务管理员,以获取他们的信息。也许这比我想象的要简单,我只是想得太多了。我完全理解这个查询,但我想按照您的说法,我必须编写“if-else”语句来告诉代码要提取哪个查询/配置文件信息from@LukasBimba不。您知道发送消息的用户的uid,因此当消息节点到达客户端时,获取uid并查找它。你不需要任何“如果”或其他逻辑。我在回答中更新了用户节点。真的没有理由“知道”是什么类型的用户发送了它,就好像你知道用户uid一样,你知道该用户的一切。如果我有一个“用户”的孩子,每个人都在其中,我就很容易得到它。我刚刚添加了一张关于数据库设置的图片。我需要一个查询来访问3个不同的子项,然后确保UID从正确的子项中提取信息