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