我在使用 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”的对象。我怎么做?
最佳答案
查询 API 中没有包含或模糊匹配方法,如果您扫描过 the API,您可能已经猜到了。和 the guide on queries .
不仅在 SO [ 1 上讨论了这个主题令人作呕。 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ],但我已经多次谈到为什么要 use a real search engine ,而不是尝试这种三心二意的搜索方法。
谷歌搜索网站通常比使用内置搜索更容易找到结果是有原因的,这是失败的主要组成部分。
综上所述,由于没有内置包含,如何手动执行此操作的问题的答案是设置一个服务器端进程,将数据加载/流式传输到内存并手动搜索内容,最好使用某种缓存。
但老实说,ElasticSearch 在这里更快、更简单、更高效。既然这是一个很大的话题,我会把你推迟到 blog post on this subject .
关于ios - Firebase 查询 - 查找包含字符串的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44226301/