javascript – 如何在Firebase中检索多个键?

这个问题在这里已经有一个答案:            >            Speed up fetching posts for my social network app by using query instead of observing a single event repeatedly                                    1
考虑到这个数据结构:

{
    "users":{
        "user-1":{
            "groups":{
                "group-key-1":true,
                "group-key-3":true
            }
        }
    },
    "groups":{
        "group-key-1":{
            "name":"My group 1"
        },
        "group-key-2":{
            "name":"My group 2"
        },
        "group-key-3":{
            "name":"My group 3"
        },
        "group-key-4":{
            "name":"My group 4"
        },
    }
}

我可以通过以下方式获取特定用户的组:

firebase.database().ref('users/user-1/groups').on(...)

这将给我这个对象:

{
    "group-key-1":true,
    "group-key-3":true
}

所以现在我想要检索这些组的信息.

我最初的直觉是循环这些键,并做到这一点:

var data = snapshot.val()
var keys = Object.keys(data)

for (var i = 0; i < keys.length; i++) {
    firebase.database().ref('groups/' + keys[i]).on(...)
}

这是在Firebase中同一端点上调用多个键的适当方式吗?

Firebase提供了更好的解决方案吗?

最佳答案

Is this the appropriate way to call multiple keys on the same endpoint
in Firebase?

是的,一般来说,这是一个很好的解决方案,以这种方式检索每个组

Does Firebase provide a better way to solve this problem?

在这种情况下,我不认为Firebase提供任何其他可以帮助的功能/查询.

无论如何,这可以改进将参考保存在变量中,并直接循环对象的键.另外,如果你只需要检索一次数据,你应该使用一次()而不是on()

var groupRef =  firebase.database().ref('groups/')
var data = snapshot.val()

for (var groupID in data) {
    groupRef.child(data[groupID]).once(...)
}

另一种方式可能是使用Firebase的functions数据快照,如forEach

snapshot.forEach(function(childSnapshot) {
      groupRef.child(childSnapshot.key).once(...)
})

转载注明原文:javascript – 如何在Firebase中检索多个键? - 代码日志