[英]Query for multiple records in firebase
我正在为firebase , orbit- firebase实现一个orbit.js适配器。
我正在寻找一种查询多个记录的有效方法,以便我可以解决对象之间的关系,例如course.participants
{
course: {
'c1': {
participants: ['p1', 'p2']
}
},
participant: {
'p1': {
name: "Jim"
},
'p2': {
name: "Mark"
}
}
}
给定我有id'p1'和'p2',什么是查询它们的有效方法?
我无法使用查询,因为我正在与参与者一起使用安全规则,即试图解决课程的用户。参与者没有访问所有参与者的权限(请记住,这是一个人为的示例)。
我建议您远离 JSON结构中的数组 。 这些只不过是实时分布式数据上的难题,并且在诸如此类的安全规则和情况下无法很好地发挥作用。
鉴于此结构:
course: {
'c1': {
participants: {
'p1': true, 'p2': true
}
}
}
我可以很容易地加入这些。 您可以通过使用Firebase.util的NormalizedCollection获得行为类似于Firebase引用的规范化引用:
var ref = new Firebase(...);
var coll = new Firebase.util.NormalizedCollection(
ref.child('course/c1/participants'),
ref.child('participant')
).select('participant.name').ref();
coll.on('child_added', function(snap) {
console.log('participant ' + snap.key(), snap.val());
});
请注意,通过允许您直接引用$courseid/participants/
下的用户ID,此数据结构(没有数组)也将使在参与者数据等上执行读取规则更加容易,因为它们现在是可以与$变量 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.