说我想只获取包含密钥的项目:" -Ju2-oZ8sJIES8_shkTv"," -Ju2-zGVMuX9tMGfySko"," -Ju202XUwybotkDPloeo&# 34 ;.
var items = new Firebase("https://hello-cambodia.firebaseio.com/items");
items.orderByKey().equalTo("-Ju2-gVQbXNgxMlojo-T").once('value', function(snap1){
items.orderByKey().equalTo("-Ju2-zGVMuX9tMGfySko").once('value', function(snap2){
items.orderByKey().equalTo("-Ju202XUwybotkDPloeo").once('value', function(snap3){
console.log(snap1.val());
console.log(snap2.val());
console.log(snap3.val());
})
})
});
我不觉得这是获取项目的正确方法,尤其是当我有1000个密钥来获取时。
如果可能的话,我真的希望能给出一组数组 喜欢
var itemKeys = ["-Ju2-gVQbXNgxMlojo-T","-Ju2-zGVMuX9tMGfySko", "-Ju202XUwybotkDPloeo"];
var items = new Firebase("https://hello-cambodia.firebaseio.com/items");
items.orderByKey().equalTo(itemKeys).once('value', function(snap){
console.log(snap.val());
});
任何建议将不胜感激。
由于
答案 0 :(得分:2)
这样做:
items.orderByKey().equalTo("-Ju2-gVQbXNgxMlojo-T")
给出完全相同的结果:
items.child("-Ju2-gVQbXNgxMlojo-T")
但后者不仅更具可读性,还可以防止扫描索引。
但你要回答的是为什么要选择这三个项目?是因为它们都具有相同的状态吗?因为他们陷入了特定的日期范围?因为用户在列表中选择了它们?只要您能够确定选择这三个项目的原因,就可以将选择转换为查询。 E.g。
var recentItems = ref.orderByChild("createdTimestamp")
.startAt(Date.now() - 24*60*60*1000)
.endAt(Date.now());
recentItems.on('child_added'...
如果您有一个包含时间戳的字段,此查询会为您提供过去一天的项目。
答案 1 :(得分:1)
您可以使用Firebase子级。例如,
var currFirebaseRoom = new Firebase(yourFirebaseURL)
var userRef = currFirebaseRoom.child('users');
现在您可以使用
访问此孩子了 userRef.on('value', function(userSnapshot) {
//your code
}
您通常不应使用Firebase密钥访问内容。创建一个名为data的子项并将所有值放在那里,然后您可以通过该子引用访问它们。