Firebase查询 - 查找包含字符串的子项

时间:2015-02-18 16:48:56

标签: ios objective-c iphone database firebase

我在使用Firebase查询时遇到了一些麻烦。我想查询对象,其中对象子值包含某个字符串。到目前为止,我有一些看起来像这样的东西:

Firebase *ref = [[Firebase alloc] initWithUrl:@"https://dinosaur-facts.firebaseio.com/dinosaurs"];
[[[[ref queryOrderedByKey] queryStartingAtValue:@"b"] queryEndingAtValue:@"b~"]
    observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {
    NSLog(@"%@", snapshot.key);
}];

但是这只会给出起始值为“b”的对象。我想要包含字符串“b”的对象。我该怎么做?

1 个答案:

答案 0 :(得分:9)

查询API中没有包含或模糊匹配方法,如果您已扫描the APIthe guide on queries,则可能已经猜到了这些方法。

不仅在SO [1] [2] [3] [4] [5]上讨论了这个主题,但我曾几次触及为什么应该use a real search engine,而不是尝试这种半心半意的搜索方法。

有一个原因,谷歌网站查找结果比使用内置搜索更容易,这是失败的主要组成部分。

总而言之,关于如何手动执行此操作的问题的答案,因为没有内置包含,是设置服务器端进程,将数据加载/流入内存并进行手动搜索内容,最好是某种缓存。

但老实说,ElasticSearch更快更简单,效率更高。由于这是一个很大的话题,我会推迟到blog post on this subject