2015-07-12 14 views
0

enter image description here如何在Firebase中獲取一組特定鍵?

說我想包含鍵只獲取項目: 「-Ju2-oZ8sJIES8_shkTv」, 「-Ju2-zGVMuX9tMGfySko」 和 「-Ju202XUwybotkDPloeo」。

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

請參閱http://stackoverflow.com/questions/30132451/query-on-multiple-values-in-firebase-similar-to-in-sql-functionality –

回答

1

您可以使用Firebase子項。例如,

var currFirebaseRoom = new Firebase(yourFirebaseURL) 
    var userRef = currFirebaseRoom.child('users'); 

現在你可以用

 userRef.on('value', function(userSnapshot) { 
      //your code 
    } 

通常你訪問這個孩子不應該使用火力地堡鍵訪問的事情。創建一個名爲data的子項,並將所有值放在那裏,然後可以通過該子引用訪問它們。

2

這樣做:

items.orderByKey().equalTo("-Ju2-gVQbXNgxMlojo-T") 

給出完全相同的結果爲:

items.child("-Ju2-gVQbXNgxMlojo-T") 

但後者不僅更具有可讀性,它也將防止掃描索引的需要。

但是你必須回答的是爲什麼要選擇這三個項目?是因爲它們都具有相同的地位?因爲它們屬於特定的日期範圍?因爲用戶在列表中選擇了它們?只要確定選擇這三個項目的原因,就可以將選擇轉換爲查詢。例如。

var recentItems = ref.orderByChild("createdTimestamp") 
        .startAt(Date.now() - 24*60*60*1000) 
        .endAt(Date.now()); 
recentItems.on('child_added'... 

這個查詢會給你過去一天的項目,如果你有一個帶有時間戳的字段。

相關問題