1
我的火力地堡看起來是這樣的:
- widgets 
    - abc123abc 
    - key1: val1 
    - key2: val2 
    - key3: val3 
    - ... 
    + abc123abd 
    + ... 
- widgets-index 
    - abc123abc 
    - timestamp: 1289183274834 
    - abc123abd 
    - timestamp: 1289183274834 

我存儲widget對象的集合,同時保持其索引的單獨列表。當我使用索引視圖從選定對象獲取數據時,我需要獲取數據對象屬性的子集。爲索引Firebase時發送兩個請求還是一個請求會更好?

我讀過Firebase使用網絡套接字的地方,所以我不應該擔心多次讀取的性能成本?我理解正確嗎?

我應該在什麼時候將對象屬性的整個子集存儲在widgets-index節點上,而不是單獨調用/widgets

編輯:

The solution to this problem can be found here.

+0

您是否找到任何解決方案? –

+1

@羅伯特威廉斯:是的。 [在這裏。](https://stackoverflow.com/a/40836002/1640892) – Mowzer

+0

我在這裏貼上了答案和信用。 –

回答

1

的火力地堡實時數據庫任意支持複雜的原子深更新(博客文章)。它的工作原理如下:

您可以使用一個.update()調用來更新任意深度的路徑 更新映射關鍵方面的完整路徑將被替換,因此,如果您不想直接訪問子項,不想吹走父 路徑相對於當前的參考 因此,讓你的例子:

var update = {}; 

update['emails/[email protected],com'] = {new: 'data'}; 
update['emails/[email protected],com'] = {new: 'data'}; 
update['users/c0djhbQi6vc4YMB-fDgJ/emails/[email protected],com'] = {new: 'data'}; 
update['users/c0djhbQi6vc4YMB-fDgJ/emails/[email protected],com'] = {new: 'data'}; 

firebase.database().ref().update(update); 

這將同時更新所有的位置。爲了使其具有動態性,只需在構建密鑰時使用字符串插值。

聲明:本答案複製自here。最初回答者:@Michael Bleigh

相關問題