我有以下Firebase结构

enter image description here

有一个节点可以按用户保留相册列表 . 在某些情况下我没有用户ID(E7Bv ..),我只有专辑ID(-L0uG ...) . 如果我有两个,那么我可以轻松访问特定的专辑节点 .

由于我没有userid,我需要一种方法来查询白蛋白等于我手头的值的节点 . 我不知道如何构建这样的查询 .

作为一种方法,我还尝试将albumid(-L0uG ...)添加到子节点作为_key的值 . 我不想复制那个值,只是查询albumid的子节点等于我对albid的值 .

或者,如果无法完成,那么任何人都可以告诉我如何查询子节点的_key值与我手头的值相匹配 - 不知道用户ID节点值?

我想做这样的事情......(其中albumRef是byUser_albums的顶级节点)

albumRef.queryOrdered(byChild: "_key").queryEqual(toValue: albumID).observeSingleEvent(of: .value, with:  { snapshot in

当然这会失败,因为_key不在userid节点上,它位于albumid节点上 . 我需要通过子节点id进行查询,或者通过_key进行更深入的查询

UPDATE

来自Frank Below . 我试过这个......

albumRef.queryOrdered(byChild: albumID).queryStarting(atValue: nil).observeSingleEvent(of: .value, with:  { snapshot in

这可以工作并找到正确的数据 . 它返回作用域autoid的键 . 唯一的缺点是Firebase说(在调试日志中)....

"**Using an unspecified index. Your data will be downloaded and filtered on the client. Consider adding ".indexOn": "-L0vTQtLwBe_hilTOGid" at /byUser_albums to your security rules for better performance**"

如果我正在进行典型的读取,那么我可以将规则添加到数据库中,但我无法添加此规则,因为它希望.indexOn的值不是静态值 - 它是自动的 . 我没有看到在autoid上编制索引的方法 . 我想我将不得不重组相册节点以将用户作为属性,而不是按用户定义范围节点 . 如果没有下载客户端上的所有数据和过滤器,我看不到一种方法 .