ios - Firebase:从未知子级检索嵌套数据

标签 ios swift firebase firebase-realtime-database

我有一个像这样的 firebase 结构

"broadcast": {
    "ghjghjFc1S3KO0y8yJwORdfgret": {   //user ID
         "ryrtybgzMiI858YyGua": {  //broadcast ID
              "a": "xxx",   // broadcast Detail
              "b": "yyy",
              "c": false
         }
         "cbvbcvbMvAnSDqTb15vU": {  //broadcast ID
              "a": "xxx",   // broadcast Detail
              "b": "yyy",
              "c": true
         }
    }
    "3uqWZJRFc1S3KO0y8yJwORTMtWC2": {   //user ID
         "jkhjkbgzMiI858YyGua": {  //broadcast ID
              "a": "xxx",   // broadcast Detail
              "b": "yyy",
              "c": false
         }
         "qwwerqweMvAnSDqTb15vU": {  //broadcast ID
              "a": "xxx",   // broadcast Detail
              "b": "yyy",
              "c": true
         }
    }
}

我想检索所有具有广播且 c 等于 true 的节点。我怎样才能快速做到这一点?

最佳答案

实现此目的的一种方法是重组数据库:

"userBroadcasts": {
    "ghjghjFc1S3KO0y8yJwORdfgret": { // user ID
        "ryrtybgzMiI858YyGua": true, // broadcastID
        "jkhjkbgzMiI858YyGua": true, // another broadcastID
        // etc..
    },
    // more users down here...
}

"broadcast": {
    "ryrtybgzMiI858YyGua": { // broadcast ID
        "a": "xxx",   // broadcast Detail
        "b": "yyy",
        "c": false
    },
    "jkhjkbgzMiI858YyGua": {
        "a": "xxx",
        "b": "yyy",
        "c": true
    },
    // more broadcasts down here...
}

然后你可以通过调用来获取所有你想要的广播:

FIRDatabase.database().reference().child("broadcast").queryOrdered(byChild: "c").queryEqual(toValue: true)

如果您还需要 userID,请在创建广播时将其存储在广播中,例如:

"broadcast": {
    "ryrtybgzMiI858YyGua": { // broadcast ID
        "a": "xxx",   // broadcast Detail
        "b": "yyy",
        "c": false,
        "userID":"ghjghjFc1S3KO0y8yJwORdfgret"
    },
    "jkhjkbgzMiI858YyGua": {
        "a": "xxx",
        "b": "yyy",
        "c": true,
        "userID":"ghjghjFc1S3KO0y8yJwORdfgret"
    },
    // more broadcasts down here...
}

使用 Firebase 数据库拥抱非规范化!

关于ios - Firebase:从未知子级检索嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44000332/

相关文章:

ios - 通过滑动改变 View

ios - 在 UITextView 中垂直居中 NSTextAttachment

ios - 如何使用 curl 登录服务器?

ios - 设置 didSet 的问题

ios - 如何为 UIViewControllers 编写单元测试用例?

ios - 无法弄清楚 Firebase 数据库结构

javascript - 尝试导入错误 : 'app' is not exported from 'firebase/app' (imported as 'firebase' )

ios - 触摸对象GLKIT或OpenGL有什么功能?

ios - SceneKit 3D 标记增强现实 iOS

firebase - 尝试在 React Native 上访问 Firebase 时出现 'nativeFlushQueueImmediate' 中的 C++ 异常