2017-06-17 23 views
1

例如,我有一個數據庫的結構是這樣的:當您使用limitToFirst或limitToLast時,Firebase是否加載所有項目?

"chatMessages": { 
    "chat1": { 
     "m1": { 
     "name": "eclarke", 
     "message": "The relay seems to be malfunctioning.", 
     "timestamp": 1459361875337 
     }, 
     "m2": { ... }, 
     "m3": { ... } 
    }, 
    "chat2": { ... }, 
    "chat3": { ... } 
    } 

現在,有些聊天有,比方說,1000級的消息。當我使用LimitToLast來檢索最近的100條消息時。在向我發送我想要檢索的100條消息之前,Firebase是否首先加載所有1,000條消息,還是將加載限制爲我真正需要的100條消息?我不確定,因爲我讀了很多關於保持數據庫儘可能平坦的信息。

如果Firebase確實首先加載了所有1,000條消息,我應該考慮以特定方式對其進行嵌套嗎?

我希望社區能讓我的事情變得清晰!

回答

3

有兩種可能的位置:

  1. 有用於查詢的索引(關鍵隱含或明確defined by you),篩選數據在服務器上。

  2. 該查詢沒有索引,在這種情況下,位置上的所有數據都會在客戶端上檢索和過濾。

+0

謝謝弗蘭克。我嘗試瞭解發生了什麼,但爲了限制服務器負載,最好給它一個子(時間戳)命令呢? –

+0

不一定。您可以通過鍵或按值進行限制。但是你的問題在這方面相當抽象,所以在我的回答中不能更具體。 –

+0

我同意,這是一個抽象的公式。我真的試圖理解服務器端會發生什麼,因爲我不想不必要地重載服務器。真的很感謝你的回答,它給了我更好的見解。再次感謝! –

相關問題