2016-07-30 82 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()) 
})