我正在为firebase,orbit- firebase实现一个orbit.js适配器.
我正在寻找一种有效的方法来查询多个记录,以便我可以解决对象之间的关系,例如course.participants
{
course: {
'c1': {
participants: ['p1', 'p2']
}
},
participant: {
'p1': {
name: "Jim"
},
'p2': {
name: "Mark"
}
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于我有ids'p1'和'p2'什么是查询它们的有效方法?
我不能使用查询,因为我正在使用与参与者的安全规则,即尝试解决课程的用户.参与者无法访问所有参与者(请记住这是一个人为的例子).
我建议您远离 JSON结构中的数组.这些只是实时分布式数据的痛苦,并且在安全规则和类似情况下不能很好地工作.
鉴于这种结构:
course: {
'c1': {
participants: {
'p1': true, 'p2': true
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以很容易地加入这些.你可以使用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());
});
Run Code Online (Sandbox Code Playgroud)
请注意,此数据结构(没有数组)还可以通过允许您直接引用用户ID来简化对参与者数据等的读取规则$courseid/participants/,因为它们现在是可以匹配$变量的键.
| 归档时间: |
|
| 查看次数: |
729 次 |
| 最近记录: |