2017-04-16 43 views
0

我有一个Firebase数据库,其中包含存储每条消息的子消息。如何提取特定数据?

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

但是,我不确定是使用查询在应用上还是从Firebase在本地执行此操作。如果这是可能的?

This is the Database

+0

您可以[使用Firebase查询进行过滤](https://firebase.google.com/docs/database/ios/lists-of-data#sorting_and_filtering_data)。但是查询只能对单个属性进行过滤,所以* * senderID *或* receiverID。看起来你正在建立一个聊天室,在这种情况下,我会模拟数据,如[我的答案在这里](http://stackoverflow.com/q/33540479)。我建议阅读[NoSQL数据建模](https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/)并查看[针对SQL开发人员的Firebase](https://www.youtube .com/playlist?list = PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s) –

+0

因此,基本上你想获得发送者是接收者的所有消息?如果是这样,我建议您在检索数据后执行此操作。 –

+0

好吧,是他们的任何其他方式,例如我需要为每个用户分组消息。与UserA发件人和UserB收件人一样,将这些消息分组并将它们仅供发件人A和B使用。 –

回答

0

这是火力地堡缺乏而且由于产品是不是数据库是不是他们的问题。这只是一个json文件。 我将如何处理这一情况如下:

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

那是你可以访问一个孩子,甚至没有查询它。你可以说:

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

我知道这很丑陋,但它是一个工作解决方案。希望能帮助到你!

+0

谢谢@SahandTheGreat, –

+0

但是,只有发件人才会观察消息而不是接收者。然后,我们将不得不将相同的消息复制到接收器节点,我猜。 –

+0

我想你可以听听孩子的任何变化。例如,接收者可能正在听他自己的孩子,等待新的发送者。如果有新消息,则会添加新的发件人子。太好了,现在你可以找到新的信息。您还可以监听接收方下的孩子何时发生变化,因此如果同一个发送方发送了新消息,您将能够找到它。 – SahandTheGreat