我有一个我贡献的传统Firebase项目。在其中,我对资源songs
:
"songs": {
".indexOn": ["artist_timestamp"]
},
允许我执行curl htttp://my-fire-base-ref/songs.json?orderBy="artist_timestamp"
但是我也可以orderBy="$priority"
这是我们添加到所有song
个对象的属性。即使它没有明确地存在于rules
json定义中,这也可以工作。这是一个秘密允许的财产吗?
答案 0 :(得分:1)
根据documentation for indexing data:
Firebase提供了用于订购和查询数据的强大工具。 具体来说,Firebase允许您对集合进行即席查询 使用任何公共子密钥的节点。随着您的应用程序的增长, 此查询的性能降低。但是,如果你告诉Firebase 关于您将要查询的密钥,Firebase会将这些密钥编入索引 服务器,提高了查询的性能。
这意味着您可以随时按任意键进行排序,而无需将其指定为索引,但没有为密钥指定的特定索引,对于大型数据集,性能可能非常差。 / p>
答案 1 :(得分:1)
每个节点的.priority
都是隐式索引的,因此您无需为其定义索引。
你为什么要使用优先级?虽然它们仍然有效,但使用命名属性可以使用更易读的代码完成相同的操作。见What does priority mean in Firebase?