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

How to fetch string in particular key in firebase

我有以下 Firebase 数据:

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

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

不,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 即可获取该用户所有聊天记录的所有引用。