我有一个firebase模型,其中每个对象都是这样的:
done: boolean
|
tags: array
|
text: string
每个对象的tag
数组都可以包含任意数量的字符串。
如何获取具有匹配标记的所有对象?例如,找到tag
包含的所有对象"电子邮件"。
答案 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提到的帖子,因为这将有助于您扩展到更高级的搜索主题。