2014-12-07 64 views
2

在我的服務,我有一個函數調用採用了棱角分明火火力點:我可以將呼叫連接到角火嗎?

filter : function(limit){ 
    return $firebase(ref.child('stats').limit(limit)).$asArray(); 
}, 

這工作正常,但如果我嘗試添加orderByChild:

filter : function(limit){ 
    return $firebase(ref.child('stats').limit(limit).orderByChild('host')).$asArray(); 
}, 

我得到錯誤:類型錯誤:未定義不一個函數

如何將這些調用鏈接在一起,以便我可以限制結果並按主機順序排列?

+0

我建議分離已經成爲一對夫婦更小的語句,所以你可以看到每步的結果。另外,如果你只執行'orderByChild('host')',而不是'limit()',它會起作用嗎?你有消息抱怨'limit()'被棄用嗎? – James 2014-12-08 21:11:35

+0

首先在limit()語句之前放置orderByChild(...),如文檔中所示。此外,該命令是'limitToFirst()'或'limitToLast()'(limit()已被棄用)。參考[指南](https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries),並保存在這裏一些顛簸。 – Kato 2014-12-19 19:01:48

回答

0

看起來像兩個問題:

  1. .limit()已被棄用。查看https://www.firebase.com/docs/web/api/query/limit.html瞭解更多詳情。

  2. 儘管從技術上說你在做什麼應該工作(文檔說,這兩個.limit().orderByChild()返回一個新的Query對象),我有一種感覺,這裏有個順序問題,即.limit()可能會返回一些不可以使用新的(er)方法(如.orderByChild())。

我想嘗試改變你的代碼段:

filter: function(limit) { 
    var query = ref.child('stats').orderByChild('host').limitToFirst(limit); 
    return $firebase(query).$asArray(); 
}, 
相關問題