我有这个节点,ref孩子有randomID。
master: {
123: {
text: "hello world"
},
456: {
text: "hello world 2"
}
}
ref: {
abc: {
123: 1,
456: 1
},
efg: {
456: 1
}
}
我想循环ref
和refToMaster
。如何使用FirebaseIndex进行查询?
new FirebaseIndex(ref.child(STUCK_HERE), master);
更新
我将节点结构更新为hiattp和kato所提到的内容。
抱歉我的问题不明确,我重新编辑了这个问题。实际上,我想同时检索ref.abc
和ref.efg
,并检索123
和456
以下是我的尝试。
angularFireCollection(ref, function(s) {
s.forEach(function(cs){
//cs.name() - So I can get abc and efg and put in FirebaseIndex
var index = new FirebaseIndex(ref.child(cs.name()), master);
$scope.foos = angularFireCollection(index);
//I stuck here, must be something wrong.
})
})
答案 0 :(得分:1)
在您的示例中,abc
和efg
应该是键列表(需要作为FirebaseIndex
中的第一个参数)。因此,格式应为refToMaster: "key"
而不是"key":1
,而1只是占位符。像这样:
ref: {
abc: {
"123":1,
"456":1
},
efg: {
"456":1
}
}
现在new FirebaseIndex(ref.child('abc'), master)
会在123
中为您提供456
和master
个对象,而new FirebaseIndex(ref.child('efg'), master)
只会为您提供456
对象
答案 1 :(得分:0)
@hiattp已经注意到FirebaseIndex的标准格式。这是预期的用例。
您还可以将函数传递给FirebaseIndex的dataRef
,这样您就可以处理更复杂的路径:
new FirebaseIndex(
new Firebase('URL/index'),
function(pathName) {
return new Firebase('URL/data/'+pathName+'/widget');
}
);
但是,由于您的数据结构存在问题,因此密钥abc
和efg
完全是任意的 - 不会以任何方式与您的master
数据相关联,因此我不会看看你的函数可以做什么,除了包含从主键到ref路径的完整映射。