带有嵌套键的 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)
当子属性有名称时,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)