【问题标题】:How to extract Specific Data?如何提取特定数据?
【发布时间】:2017-09-12 01:46:16
【问题描述】:

我有一个 Firebase 数据库,其中包含一个子“消息”,其中存储了每条消息。

我只想检索应用程序中 senderID 或 ReceiverID 等于 senderID 或 Receiver ID 的值。这样我可以为每个用户整理消息。

但是,我不确定是在应用程序本地执行此操作,还是使用查询从 Firebase 执行此操作。如果可以吗?

【问题讨论】:

  • 您可以use Firebase queries to filter。但是查询只能过滤单个属性,所以 either senderID or receiverID。您似乎正在建立一个聊天室,在这种情况下,我会像my answer here 那样对数据进行建模。我建议阅读NoSQL data modeling 并查看Firebase for SQL developers
  • 那么,基本上你想获取发送者也是接收者的所有消息?如果是这样,我建议您在检索数据后执行此操作。
  • 好吧,他们是否有其他方式,例如我需要为每个用户分组消息。像 UserA Sender 和 UserB Receiver 一样,对这些消息进行分组,并使其仅对 senderA 和 B 可用。
  • 这很难回答,因为它取决于您的用例。例如,假设用户 uid 为 15D... 正在登录。通常,在登录时,该用户会将观察者(查询)附加到消息节点,如果发布了包含其接收者 ID 的消息,该节点将通知他们。如果另一个用户向接收者 ID = 15D... 的消息节点发帖,他们将立即收到通知,在这种情况下,节点中的数据将被传递到应用程序;然后他们就会知道 senderID 是谁。

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

这是 Firebase 缺乏的地方,这不是他们的问题,因为产品不是数据库。这只是一个json文件。 我将如何处理如下:

Messages
  |- receiverID
       |- senderID
            |- The rest of your dictionary

也就是说,您甚至可以在不查询子项的情况下访问它。你可以说:

child('Messages').child(receiverID).child(senderID).observe value etc.

我知道这很丑,但这是一个可行的解决方案。希望对您有所帮助!

【讨论】:

  • 谢谢@SahandTheGreat,
  • 但是这样只有发送者会观察消息而不是接收者。然后我们必须将相同的消息复制到我猜的接收者节点中。
  • 我认为你可以倾听孩子的任何变化。例如,接收者可能正在听他自己的孩子,等待新的发送者。如果有新消息,将添加一个新的发件人孩子。太好了,现在您可以找到新消息了。您还可以监听接收者下的孩子何时发生变化,因此如果同一发送者发送了新消息,您将能够找到它。
猜你喜欢
  • 2015-08-27
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多