2013-04-28 24 views
1

這不是什麼大不了的事,但我想它扔在那裏 - 如果你有100個項目增量的優先級,你有這樣的名單:只是我,還是Firebase的默認LIMIT()行爲向後工作?

item#1: { .priority: 1 } 
... 
item#100: { .priority: 100 } 

的第一項是#1優先1,最後產品#100優先100現在,如果你限制()列表中3項,像這樣:

firebaseRef.limit(3).once(...) 

而不是返回1-3項,您將返回項目97 -100。大多數人期望嗎?這與限制通常在其他環境中的工作方式相反。例如,在SQL中,您從集合的開始處開始並在達到限制時停止。

現在這不是技術上的限制或任何東西(我相信),因爲我們實際上可以得到1-3的記錄很容易地通過第一個項目使用STARTAT():

firebaseRef.startAt(1).limit(3).once(...) 

事實上,當LIMIT()在沒有STARTAT()或者ENDAT()的情況下使用時,它的行爲就像你用最後一項指定ENDAT()一樣。例如,這些產生相同的結果:

firebaseRef.limit(3).once(...) 
firebaseRef.endAt(100).limit(3).once(...) 

不它看起來像默認的行爲應該是從第一位置模仿STARTAT(),而不是ENDAT()從最後一個位置,如果只LIMIT( )是否被指定?

回答

3

你完全正確地斷定默認行爲就像使用endAt()一樣工作(因此最新的項目將被返回)。這是因爲在最常見的用例中,您希望顯示最新的數據,而不是最早的;例如:聊天記錄或通知。

相關問題