Firebase indexOn 与规则 JSON 中不符的内容一起工作



我有一个我参与的旧版Firebase项目。在其中,我对资源songs有以下规则:

"songs": {
".indexOn": ["artist_timestamp"]
}, 

这让我可以做一些像curl htttp://my-fire-base-ref/songs.json?orderBy="artist_timestamp"

但是,我也可以orderBy="$priority"这是我们添加到所有song对象的属性。即使它没有明确地出现在rulesjson 定义中,这也有效。这是秘密允许的财产吗?

每个节点的.priority都是隐式索引的,因此您无需为其定义索引。

不过,你为什么要使用优先级?虽然它们仍然有效,但使用命名属性允许您使用更具可读性的代码完成相同的操作。请参阅优先级在 Firebase 中意味着什么?

根据索引数据的文档:

Firebase 提供了强大的工具来对数据进行排序和查询。 具体来说,Firebase允许您对集合进行即席查询。 使用任何公共子键的节点数。随着应用的增长, 此查询的性能会降低。但是,如果您告诉Firebase 关于您要查询的键,Firebase 会将这些键编入索引 服务器,提高查询的性能。

这意味着您可以随时按任何键排序,而无需将其指定为索引,但如果没有为键指定特定索引,则大型数据集的性能可能会非常差。

最新更新