如何在firebase中获取特定键的字符串

时间:2015-03-17 05:21:40

标签: iphone firebase firepad

我有如下的firebase数据:

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

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

1 个答案:

答案 0 :(得分:2)

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

所以:

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

你会得到:

+ - - -simplelogin48simplelogin50
+ - - -simplelogin48simplelogin50

+ - - simplelogin50simplelogin48 

解决此问题的方法是创建一个所谓的索引节点,在这种情况下,只列出每个用户的聊天ID:

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

使用此结构,您只需访问chats_by_user/simplylogin48即可获得该用户所有聊天的所有引用。