Firebase - 获取包含的所有数据

时间:2014-03-19 15:05:24

标签: javascript angularjs firebase angularfire

我有一个firebase模型,其中每个对象都是这样的:

done: boolean
|
tags: array
|
text: string

每个对象的tag数组都可以包含任意数量的字符串。

如何获取具有匹配标记的所有对象?例如,找到tag包含的所有对象"电子邮件"。

1 个答案:

答案 0 :(得分:3)

许多更常见的搜索方案,例如按属性搜索(因为您的代码数组将包含)将随着API的不断扩展而融入Firebase。

与此同时,你自己也可以成长。根据您的问题,一种方法是简单地使用匹配的记录列表“索引”标记列表:

/tags/$tag/record_ids...

然后,要搜索包含给定标记的记录,您只需对标记列表进行快速查询:

new Firebase('URL/tags/'+tagName).once('value', function(snap) {
    var listOfRecordIds = snap.val();
});

这是一个非常常见的NoSQL口头禅 - 在初始写入中投入更多精力,以便以后轻松读取。它也是一种常见的denormalization方法(并且在一个更复杂的层面上,一个大多数SQL数据库在内部使用)。

另请参阅Frank提到的帖子,因为这将有助于您扩展到更高级的搜索主题。