2016-07-30 93 views
1

由於某些原因,這兩個示例不會返回相同的值。如何在創建Firebase參考後添加過濾功能

實施例1

var ref = firebase.database().ref('fruits').orderByChild('name').equalTo('Mango') 
ref.once('value',function(snapshot){ 
    console.log(snapshot.val()) 
}) 

返回:

{ 
    "mango":{"name":"Mango"} 
} 

實施例2

var ref2 = firebase.database().ref('fruits') 
ref2.orderByChild('name').equalTo('Mango') 
ref2.once('value',function(snapshot){ 
    console.log(snapshot.val()) 
}) 

返回:

{ 
    "apple":{"name":"Apple"}, 
    "banana":{"name":"Banana"}, 
    "mango":{"name":"Mango"}, 
    "strawberry":{"name":"Strawberry"} 
} 

實例2的區別在於,在創建了之後,過濾函數應用於參考,原則上該方法應與方法鏈相似。

如果這不是一個錯誤,那麼如何在之後應用這些過濾函數

You can see this running in this JsFiddle

回答

5

調用orderByChild()equalTo()或對基準的其他排序/過濾方法中的一個返回一個新的對象。因此,示例2應該是:

var ref2 = firebase.database().ref('fruits') 
var query = ref2.orderByChild('name').equalTo('Mango') 
query.once('value',function(snapshot){ 
    console.log(snapshot.val()) 
})