0

我的firebase数据如下:

chats
| 
|
+ - - -simplelogin48simplelogin50
|    
|     
|
+ - - simplelogin50simplelogin48 
|
|     
|   
+ - - -simplelogin48simplelogin50

现在我想获取包含“simplelogin 48”的聊天数据。有可能吗?

4

1 回答 1

2

不,Firebase 在其查询中不支持包含运算符。Firebase 提供queryStartingAtValuequeryEndingAtValue运算符来选择一系列键,但它们都基于键的开头(或属性值或优先级,如果您已订购这些键)。请参阅解释查询的 Firebase iOS 文档的这一部分。

所以通过:

[[[[ref queryOrderedByKey] queryStartingAtValue:@"simplelogin48"] queryEndingAtValue:@"simplelogin48"]

你会得到:

+ - - -simplelogin48simplelogin50
+ - - -simplelogin48simplelogin50

不是

+ - - simplelogin50simplelogin48 

解决这个问题的方法是创建一个所谓的index node,在这种情况下,它只是列出了每个用户的聊天 ID:

chats_by_user
  |    
  + - - simplelogin48
  |  |     
  |  + - - simplelogin48simplelogin50 
  |  |     
  |  + - - simplelogin48simplelogin49 
  |  |     
  |  + - - simplelogin50simplelogin48 
  |    
  + - - simplelogin49
  |  |     
  |  + - - simplelogin48simplelogin49 
  |    
  + - - simplelogin50
    |     
    + - - simplelogin50simplelogin48 
    |     
    + - - simplelogin48simplelogin50 

使用这种结构,您可以简单地访问chats_by_user/simplylogin48以获取对该用户所有聊天的所有引用。

于 2015-03-17T14:20:07.683 回答