带有嵌套键的 Firebase orderByChild()

Firebase orderByChild() with nested keys

当子属性有名称时,Firebase orderByChild() 效果很好,因此对于这样的数据:

groups
    <groupID>
        groupStatus: "Active"

很容易得到状态为"Active"的组的groupIDs:

var ref = "http://myFirebase.firebaseio.com/groups";
ref.orderByChild("groupStatus").equalTo("Active").on("child_added", function(snapshot) {
    console.log(snapshot.key());
});

但我有以下形式的群组和这些群组成员的 firebase 数据:

groups
    group123
        member404: true
        member503: true
        ...
    group124
        member503: true
        member221: true
        ...

我需要生成一个特定成员 "friends" 的所有成员 ID 的列表,定义为与他们至少在一个共同的组中。对于成员 503,您会认为这将是一个 orderByChild() 机会。但是由于 memberID 是嵌套在组下的键,语法是什么?

类似于:

ref.orderByChild(???).equalTo("member503")

当然,我可以在本地将所有组的所有成员放入一个数组中,但是肯定有办法让 firebase 为我做这个吗?

您在这里混淆了子键和值。解决方案:

ref.child('groups').orderByChild('member404').equalTo(true)