我的firebase数据如下:
chats
|
|
+ - - -simplelogin48simplelogin50
|
|
|
+ - - simplelogin50simplelogin48
|
|
|
+ - - -simplelogin48simplelogin50
现在我想获取包含“simplelogin 48”的聊天数据。有可能吗?
不,Firebase 在其查询中不支持包含运算符。Firebase 提供queryStartingAtValue
和queryEndingAtValue
运算符来选择一系列键,但它们都基于键的开头(或属性值或优先级,如果您已订购这些键)。请参阅解释查询的 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
以获取对该用户所有聊天的所有引用。